From 14bf9d366e6c23ad44c8266f87405a401dfa3f90 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Thu, 25 Dec 2014 19:23:29 +0000 Subject: files structure changed git-svn-id: http://svn.miranda-ng.org/main/trunk@11637 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- src/core/stduseronline/commonheaders.cpp | 2 - src/core/stduseronline/commonheaders.h | 76 ------------ src/core/stduseronline/main.cpp | 69 ----------- src/core/stduseronline/res/resource.rc | 66 +++++++++++ src/core/stduseronline/res/version.rc | 38 ++++++ src/core/stduseronline/resource.rc | 66 ----------- src/core/stduseronline/src/commonheaders.cpp | 2 + src/core/stduseronline/src/commonheaders.h | 76 ++++++++++++ src/core/stduseronline/src/main.cpp | 69 +++++++++++ src/core/stduseronline/src/useronline.cpp | 129 +++++++++++++++++++++ src/core/stduseronline/src/version.h | 12 ++ src/core/stduseronline/stduseronline_10.vcxproj | 18 ++- .../stduseronline/stduseronline_10.vcxproj.filters | 15 ++- src/core/stduseronline/stduseronline_12.vcxproj | 18 ++- .../stduseronline/stduseronline_12.vcxproj.filters | 15 ++- src/core/stduseronline/useronline.cpp | 129 --------------------- src/core/stduseronline/version.h | 14 --- src/core/stduseronline/version.rc | 42 ------- 18 files changed, 426 insertions(+), 430 deletions(-) delete mode 100644 src/core/stduseronline/commonheaders.cpp delete mode 100644 src/core/stduseronline/commonheaders.h delete mode 100644 src/core/stduseronline/main.cpp create mode 100644 src/core/stduseronline/res/resource.rc create mode 100644 src/core/stduseronline/res/version.rc delete mode 100644 src/core/stduseronline/resource.rc create mode 100644 src/core/stduseronline/src/commonheaders.cpp create mode 100644 src/core/stduseronline/src/commonheaders.h create mode 100644 src/core/stduseronline/src/main.cpp create mode 100644 src/core/stduseronline/src/useronline.cpp create mode 100644 src/core/stduseronline/src/version.h delete mode 100644 src/core/stduseronline/useronline.cpp delete mode 100644 src/core/stduseronline/version.h delete mode 100644 src/core/stduseronline/version.rc (limited to 'src/core/stduseronline') diff --git a/src/core/stduseronline/commonheaders.cpp b/src/core/stduseronline/commonheaders.cpp deleted file mode 100644 index 95b2201163..0000000000 --- a/src/core/stduseronline/commonheaders.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#include "commonheaders.h" - diff --git a/src/core/stduseronline/commonheaders.h b/src/core/stduseronline/commonheaders.h deleted file mode 100644 index 1b1e6585ee..0000000000 --- a/src/core/stduseronline/commonheaders.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-12 Miranda IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#define WINVER 0x0700 -#define _WIN32_WINNT 0x0700 -#define _WIN32_IE 0x0601 - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "version.h" - -#include "../../resource.h" -#include "../stdplug.h" - -extern HINSTANCE hInst; diff --git a/src/core/stduseronline/main.cpp b/src/core/stduseronline/main.cpp deleted file mode 100644 index 25b5e96710..0000000000 --- a/src/core/stduseronline/main.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* - -Standard user online monitor for Miranda NG - -Copyright (C) 2012-14 George Hazan - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ - -#include "commonheaders.h" - -int LoadUserOnlineModule(void); - -CLIST_INTERFACE* pcli; -HINSTANCE hInst; -int hLangpack; - -PLUGININFOEX pluginInfo = { - sizeof(PLUGININFOEX), - __PLUGIN_NAME, - MIRANDA_VERSION_DWORD, - __DESCRIPTION, - __AUTHOR, - __AUTHOREMAIL, - __COPYRIGHT, - __AUTHORWEB, - UNICODE_AWARE, - // 251c78d7-f6e0-4083-92dc-252dcb3be724 - { 0x251c78d7, 0xf6e0, 0x4083, {0x92, 0xdc, 0x25, 0x2d, 0xcb, 0x3b, 0xe7, 0x24}} -}; - -BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) -{ - hInst = hinstDLL; - return TRUE; -} - -extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) -{ - return &pluginInfo; -} - -extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_USERONLINE, MIID_LAST }; - -extern "C" int __declspec(dllexport) Load(void) -{ - mir_getLP(&pluginInfo); - mir_getCLI(); - - LoadUserOnlineModule(); - return 0; -} - -extern "C" int __declspec(dllexport) Unload(void) -{ - return 0; -} diff --git a/src/core/stduseronline/res/resource.rc b/src/core/stduseronline/res/resource.rc new file mode 100644 index 0000000000..5bb57eb276 --- /dev/null +++ b/src/core/stduseronline/res/resource.rc @@ -0,0 +1,66 @@ +// Microsoft Visual C++ generated resource script. +// +#include "..\..\resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include +#include + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +#endif // APSTUDIO_INVOKED + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN +END +#endif // APSTUDIO_INVOKED + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "..\..\resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include \r\n" + "#include \r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED diff --git a/src/core/stduseronline/res/version.rc b/src/core/stduseronline/res/version.rc new file mode 100644 index 0000000000..5bfbab4754 --- /dev/null +++ b/src/core/stduseronline/res/version.rc @@ -0,0 +1,38 @@ +// Microsoft Visual C++ generated resource script. +// +#ifdef APSTUDIO_INVOKED +#error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + +#include "afxres.h" +#include "..\src\version.h" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION __FILEVERSION_STRING + PRODUCTVERSION __FILEVERSION_STRING + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x0L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "000004b0" + BEGIN + VALUE "FileDescription", __DESCRIPTION + VALUE "InternalName", __PLUGIN_NAME + VALUE "LegalCopyright", __COPYRIGHT + VALUE "OriginalFilename", __FILENAME + VALUE "ProductName", __PLUGIN_NAME + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0, 1200 + END +END diff --git a/src/core/stduseronline/resource.rc b/src/core/stduseronline/resource.rc deleted file mode 100644 index 5bb57eb276..0000000000 --- a/src/core/stduseronline/resource.rc +++ /dev/null @@ -1,66 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "..\..\resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include -#include - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (United States) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -#endif // APSTUDIO_INVOKED - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN -END -#endif // APSTUDIO_INVOKED - - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "..\..\resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include \r\n" - "#include \r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED diff --git a/src/core/stduseronline/src/commonheaders.cpp b/src/core/stduseronline/src/commonheaders.cpp new file mode 100644 index 0000000000..95b2201163 --- /dev/null +++ b/src/core/stduseronline/src/commonheaders.cpp @@ -0,0 +1,2 @@ +#include "commonheaders.h" + diff --git a/src/core/stduseronline/src/commonheaders.h b/src/core/stduseronline/src/commonheaders.h new file mode 100644 index 0000000000..1b1e6585ee --- /dev/null +++ b/src/core/stduseronline/src/commonheaders.h @@ -0,0 +1,76 @@ +/* + +Miranda NG: the free IM client for Microsoft* Windows* + +Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), +Copyright (c) 2000-12 Miranda IM project, +all portions of this codebase are copyrighted to the people +listed in contributors.txt. + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#define WINVER 0x0700 +#define _WIN32_WINNT 0x0700 +#define _WIN32_IE 0x0601 + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "version.h" + +#include "../../resource.h" +#include "../stdplug.h" + +extern HINSTANCE hInst; diff --git a/src/core/stduseronline/src/main.cpp b/src/core/stduseronline/src/main.cpp new file mode 100644 index 0000000000..25b5e96710 --- /dev/null +++ b/src/core/stduseronline/src/main.cpp @@ -0,0 +1,69 @@ +/* + +Standard user online monitor for Miranda NG + +Copyright (C) 2012-14 George Hazan + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "commonheaders.h" + +int LoadUserOnlineModule(void); + +CLIST_INTERFACE* pcli; +HINSTANCE hInst; +int hLangpack; + +PLUGININFOEX pluginInfo = { + sizeof(PLUGININFOEX), + __PLUGIN_NAME, + MIRANDA_VERSION_DWORD, + __DESCRIPTION, + __AUTHOR, + __AUTHOREMAIL, + __COPYRIGHT, + __AUTHORWEB, + UNICODE_AWARE, + // 251c78d7-f6e0-4083-92dc-252dcb3be724 + { 0x251c78d7, 0xf6e0, 0x4083, {0x92, 0xdc, 0x25, 0x2d, 0xcb, 0x3b, 0xe7, 0x24}} +}; + +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) +{ + hInst = hinstDLL; + return TRUE; +} + +extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) +{ + return &pluginInfo; +} + +extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_USERONLINE, MIID_LAST }; + +extern "C" int __declspec(dllexport) Load(void) +{ + mir_getLP(&pluginInfo); + mir_getCLI(); + + LoadUserOnlineModule(); + return 0; +} + +extern "C" int __declspec(dllexport) Unload(void) +{ + return 0; +} diff --git a/src/core/stduseronline/src/useronline.cpp b/src/core/stduseronline/src/useronline.cpp new file mode 100644 index 0000000000..f8a58124da --- /dev/null +++ b/src/core/stduseronline/src/useronline.cpp @@ -0,0 +1,129 @@ +/* + +Miranda NG: the free IM client for Microsoft* Windows* + +Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), +Copyright (c) 2000-12 Miranda IM project, +all portions of this codebase are copyrighted to the people +listed in contributors.txt. + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include "commonheaders.h" + +static int uniqueEventId = 0; + +static bool Proto_IsAccountEnabled(PROTOACCOUNT *pa) +{ + return pa && ((pa->bIsEnabled && !pa->bDynDisabled) || pa->bOldProto); +} + +static int UserOnlineSettingChanged(WPARAM hContact, LPARAM lParam) +{ + DBCONTACTWRITESETTING *cws = (DBCONTACTWRITESETTING*)lParam; + if (hContact == NULL || strcmp(cws->szSetting, "Status")) + return 0; + + int newStatus = cws->value.wVal; + int oldStatus = db_get_w(hContact, "UserOnline", "OldStatus", ID_STATUS_OFFLINE); + db_set_w(hContact, "UserOnline", "OldStatus", (WORD)newStatus); + if (CallService(MS_IGNORE_ISIGNORED, hContact, IGNOREEVENT_USERONLINE)) return 0; + if (db_get_b(hContact, "CList", "Hidden", 0)) return 0; + if (newStatus == ID_STATUS_OFFLINE && oldStatus != ID_STATUS_OFFLINE) { + // Remove the event from the queue if it exists since they are now offline + int lastEvent = (int)db_get_dw(hContact, "UserOnline", "LastEvent", 0); + + if (lastEvent) { + CallService(MS_CLIST_REMOVEEVENT, hContact, (LPARAM)lastEvent); + db_set_dw(hContact, "UserOnline", "LastEvent", 0); + } + } + if ((newStatus == ID_STATUS_ONLINE || newStatus == ID_STATUS_FREECHAT) && + oldStatus != ID_STATUS_ONLINE && oldStatus != ID_STATUS_FREECHAT) { + { + DWORD ticked = db_get_dw(NULL, "UserOnline", cws->szModule, GetTickCount()); + // only play the sound (or show event) if this event happens at least 10 secs after the proto went from offline + if (GetTickCount() - ticked > (1000*10)) { + CLISTEVENT cle; + TCHAR tooltip[256]; + + memset(&cle, 0, sizeof(cle)); + cle.cbSize = sizeof(cle); + cle.flags = CLEF_ONLYAFEW | CLEF_TCHAR; + cle.hContact = hContact; + cle.hDbEvent = (HANDLE)(uniqueEventId++); + cle.hIcon = LoadSkinIcon(SKINICON_OTHER_USERONLINE, false); + cle.pszService = "UserOnline/Description"; + mir_sntprintf(tooltip, SIZEOF(tooltip), TranslateT("%s is online"), pcli->pfnGetContactDisplayName(hContact, 0)); + cle.ptszTooltip = tooltip; + CallService(MS_CLIST_ADDEVENT, 0, (LPARAM)&cle); + IcoLib_ReleaseIcon(cle.hIcon, 0); + db_set_dw(cle.hContact, "UserOnline", "LastEvent", (DWORD)cle.hDbEvent); + SkinPlaySound("UserOnline"); + } + } + } + return 0; +} + +static int UserOnlineAck(WPARAM, LPARAM lParam) +{ + ACKDATA * ack = (ACKDATA*) lParam; + if (ack != 0 && ack->szModule && ack->type == ACKTYPE_STATUS && ack->result == ACKRESULT_SUCCESS && ack->hProcess == (HANDLE)ID_STATUS_OFFLINE) { + // if going from offline to any other mode, remember when it happened. + db_set_dw(NULL, "UserOnline", ack->szModule, GetTickCount()); + } + return 0; +} + +static int UserOnlineModulesLoaded(WPARAM, LPARAM) +{ + int numAccounts; + PROTOACCOUNT** accounts; + ProtoEnumAccounts(&numAccounts, &accounts); + + // reset the counter + for (int i = 0; i < numAccounts; i++) + if (Proto_IsAccountEnabled(accounts[i])) + db_set_dw(NULL, "UserOnline", accounts[i]->szModuleName, GetTickCount()); + + return 0; +} + +static int UserOnlineAccountsChanged(WPARAM eventCode, LPARAM lParam) +{ + PROTOACCOUNT *pa = (PROTOACCOUNT*)lParam; + + switch(eventCode) { + case PRAC_ADDED: + case PRAC_CHECKED: + // reset the counter + if (Proto_IsAccountEnabled(pa)) + db_set_dw(NULL, "UserOnline", pa->szModuleName, GetTickCount()); + break; + } + return 0; +} + +int LoadUserOnlineModule(void) +{ + HookEvent(ME_DB_CONTACT_SETTINGCHANGED, UserOnlineSettingChanged); + HookEvent(ME_PROTO_ACK, UserOnlineAck); + HookEvent(ME_SYSTEM_MODULESLOADED, UserOnlineModulesLoaded); + HookEvent(ME_PROTO_ACCLISTCHANGED, UserOnlineAccountsChanged); + SkinAddNewSoundEx("UserOnline", LPGEN("Alerts"), LPGEN("Online")); + return 0; +} diff --git a/src/core/stduseronline/src/version.h b/src/core/stduseronline/src/version.h new file mode 100644 index 0000000000..82ec152b4f --- /dev/null +++ b/src/core/stduseronline/src/version.h @@ -0,0 +1,12 @@ +#include + +#define __FILEVERSION_STRING MIRANDA_VERSION_FILEVERSION +#define __VERSION_STRING MIRANDA_VERSION_STRING + +#define __PLUGIN_NAME "Standard User-Is-Online module" +#define __FILENAME "stduseronline.dll" +#define __DESCRIPTION "Core module for user-is-online event processing." +#define __AUTHOR "Miranda NG Development Team" +#define __AUTHOREMAIL "" +#define __AUTHORWEB "http://miranda-ng.org/p/StdUserOnline/" +#define __COPYRIGHT "© 2012 Miranda NG Development Team" diff --git a/src/core/stduseronline/stduseronline_10.vcxproj b/src/core/stduseronline/stduseronline_10.vcxproj index ce0643b36c..97b35f4967 100644 --- a/src/core/stduseronline/stduseronline_10.vcxproj +++ b/src/core/stduseronline/stduseronline_10.vcxproj @@ -199,22 +199,20 @@ - - Create - Create - Create - Create + + Create - - + + - + + - - + + diff --git a/src/core/stduseronline/stduseronline_10.vcxproj.filters b/src/core/stduseronline/stduseronline_10.vcxproj.filters index 33d6b5e67e..f47f70fc21 100644 --- a/src/core/stduseronline/stduseronline_10.vcxproj.filters +++ b/src/core/stduseronline/stduseronline_10.vcxproj.filters @@ -15,29 +15,32 @@ - + Source Files - + Source Files - + Source Files - + Header Files Header Files + + Header Files + - + Resource Files - + Resource Files diff --git a/src/core/stduseronline/stduseronline_12.vcxproj b/src/core/stduseronline/stduseronline_12.vcxproj index 81954e587e..f6bbbae09c 100644 --- a/src/core/stduseronline/stduseronline_12.vcxproj +++ b/src/core/stduseronline/stduseronline_12.vcxproj @@ -202,22 +202,20 @@ - - Create - Create - Create - Create + + Create - - + + - + + - - + + diff --git a/src/core/stduseronline/stduseronline_12.vcxproj.filters b/src/core/stduseronline/stduseronline_12.vcxproj.filters index 33d6b5e67e..f47f70fc21 100644 --- a/src/core/stduseronline/stduseronline_12.vcxproj.filters +++ b/src/core/stduseronline/stduseronline_12.vcxproj.filters @@ -15,29 +15,32 @@ - + Source Files - + Source Files - + Source Files - + Header Files Header Files + + Header Files + - + Resource Files - + Resource Files diff --git a/src/core/stduseronline/useronline.cpp b/src/core/stduseronline/useronline.cpp deleted file mode 100644 index f8a58124da..0000000000 --- a/src/core/stduseronline/useronline.cpp +++ /dev/null @@ -1,129 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (c) 2012-14 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-12 Miranda IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "commonheaders.h" - -static int uniqueEventId = 0; - -static bool Proto_IsAccountEnabled(PROTOACCOUNT *pa) -{ - return pa && ((pa->bIsEnabled && !pa->bDynDisabled) || pa->bOldProto); -} - -static int UserOnlineSettingChanged(WPARAM hContact, LPARAM lParam) -{ - DBCONTACTWRITESETTING *cws = (DBCONTACTWRITESETTING*)lParam; - if (hContact == NULL || strcmp(cws->szSetting, "Status")) - return 0; - - int newStatus = cws->value.wVal; - int oldStatus = db_get_w(hContact, "UserOnline", "OldStatus", ID_STATUS_OFFLINE); - db_set_w(hContact, "UserOnline", "OldStatus", (WORD)newStatus); - if (CallService(MS_IGNORE_ISIGNORED, hContact, IGNOREEVENT_USERONLINE)) return 0; - if (db_get_b(hContact, "CList", "Hidden", 0)) return 0; - if (newStatus == ID_STATUS_OFFLINE && oldStatus != ID_STATUS_OFFLINE) { - // Remove the event from the queue if it exists since they are now offline - int lastEvent = (int)db_get_dw(hContact, "UserOnline", "LastEvent", 0); - - if (lastEvent) { - CallService(MS_CLIST_REMOVEEVENT, hContact, (LPARAM)lastEvent); - db_set_dw(hContact, "UserOnline", "LastEvent", 0); - } - } - if ((newStatus == ID_STATUS_ONLINE || newStatus == ID_STATUS_FREECHAT) && - oldStatus != ID_STATUS_ONLINE && oldStatus != ID_STATUS_FREECHAT) { - { - DWORD ticked = db_get_dw(NULL, "UserOnline", cws->szModule, GetTickCount()); - // only play the sound (or show event) if this event happens at least 10 secs after the proto went from offline - if (GetTickCount() - ticked > (1000*10)) { - CLISTEVENT cle; - TCHAR tooltip[256]; - - memset(&cle, 0, sizeof(cle)); - cle.cbSize = sizeof(cle); - cle.flags = CLEF_ONLYAFEW | CLEF_TCHAR; - cle.hContact = hContact; - cle.hDbEvent = (HANDLE)(uniqueEventId++); - cle.hIcon = LoadSkinIcon(SKINICON_OTHER_USERONLINE, false); - cle.pszService = "UserOnline/Description"; - mir_sntprintf(tooltip, SIZEOF(tooltip), TranslateT("%s is online"), pcli->pfnGetContactDisplayName(hContact, 0)); - cle.ptszTooltip = tooltip; - CallService(MS_CLIST_ADDEVENT, 0, (LPARAM)&cle); - IcoLib_ReleaseIcon(cle.hIcon, 0); - db_set_dw(cle.hContact, "UserOnline", "LastEvent", (DWORD)cle.hDbEvent); - SkinPlaySound("UserOnline"); - } - } - } - return 0; -} - -static int UserOnlineAck(WPARAM, LPARAM lParam) -{ - ACKDATA * ack = (ACKDATA*) lParam; - if (ack != 0 && ack->szModule && ack->type == ACKTYPE_STATUS && ack->result == ACKRESULT_SUCCESS && ack->hProcess == (HANDLE)ID_STATUS_OFFLINE) { - // if going from offline to any other mode, remember when it happened. - db_set_dw(NULL, "UserOnline", ack->szModule, GetTickCount()); - } - return 0; -} - -static int UserOnlineModulesLoaded(WPARAM, LPARAM) -{ - int numAccounts; - PROTOACCOUNT** accounts; - ProtoEnumAccounts(&numAccounts, &accounts); - - // reset the counter - for (int i = 0; i < numAccounts; i++) - if (Proto_IsAccountEnabled(accounts[i])) - db_set_dw(NULL, "UserOnline", accounts[i]->szModuleName, GetTickCount()); - - return 0; -} - -static int UserOnlineAccountsChanged(WPARAM eventCode, LPARAM lParam) -{ - PROTOACCOUNT *pa = (PROTOACCOUNT*)lParam; - - switch(eventCode) { - case PRAC_ADDED: - case PRAC_CHECKED: - // reset the counter - if (Proto_IsAccountEnabled(pa)) - db_set_dw(NULL, "UserOnline", pa->szModuleName, GetTickCount()); - break; - } - return 0; -} - -int LoadUserOnlineModule(void) -{ - HookEvent(ME_DB_CONTACT_SETTINGCHANGED, UserOnlineSettingChanged); - HookEvent(ME_PROTO_ACK, UserOnlineAck); - HookEvent(ME_SYSTEM_MODULESLOADED, UserOnlineModulesLoaded); - HookEvent(ME_PROTO_ACCLISTCHANGED, UserOnlineAccountsChanged); - SkinAddNewSoundEx("UserOnline", LPGEN("Alerts"), LPGEN("Online")); - return 0; -} diff --git a/src/core/stduseronline/version.h b/src/core/stduseronline/version.h deleted file mode 100644 index fbb7fb5e43..0000000000 --- a/src/core/stduseronline/version.h +++ /dev/null @@ -1,14 +0,0 @@ - -#include - -#define __FILEVERSION_STRING MIRANDA_VERSION_FILEVERSION -#define __VERSION_STRING MIRANDA_VERSION_STRING - -#define __PLUGIN_NAME "Standard User-Is-Online module" -#define __INTERNAL_NAME "stduseronline" -#define __FILENAME "stduseronline.dll" -#define __DESCRIPTION "Core module for user-is-online event processing." -#define __AUTHOR "Miranda NG Development Team" -#define __AUTHOREMAIL "" -#define __AUTHORWEB "http://miranda-ng.org/p/StdUserOnline/" -#define __COPYRIGHT "© 2012 Miranda NG Development Team" diff --git a/src/core/stduseronline/version.rc b/src/core/stduseronline/version.rc deleted file mode 100644 index d1da5e8d6a..0000000000 --- a/src/core/stduseronline/version.rc +++ /dev/null @@ -1,42 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#ifdef APSTUDIO_INVOKED -#error this file is not editable by Microsoft Visual C++ -#endif //APSTUDIO_INVOKED - -#include "afxres.h" -#include "version.h" - -#ifdef _WIN32 -LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -#endif //_WIN32 - -VS_VERSION_INFO VERSIONINFO - FILEVERSION __FILEVERSION_STRING - PRODUCTVERSION __FILEVERSION_STRING - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x0L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "000004b0" - BEGIN - VALUE "FileDescription", __DESCRIPTION - VALUE "InternalName", __PLUGIN_NAME - VALUE "LegalCopyright", __COPYRIGHT - VALUE "OriginalFilename", __FILENAME - VALUE "ProductName", __PLUGIN_NAME - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x0, 1200 - END -END -- cgit v1.2.3