From 49f674c71a033583c59aac67d6720fcb72cc28a4 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Sat, 23 Jun 2012 15:47:13 +0000 Subject: SeenPlugin: renamed to .cpp git-svn-id: http://svn.miranda-ng.org/main/trunk@563 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/SeenPlugin/menu.cpp | 113 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 plugins/SeenPlugin/menu.cpp (limited to 'plugins/SeenPlugin/menu.cpp') diff --git a/plugins/SeenPlugin/menu.cpp b/plugins/SeenPlugin/menu.cpp new file mode 100644 index 0000000000..02f241b793 --- /dev/null +++ b/plugins/SeenPlugin/menu.cpp @@ -0,0 +1,113 @@ +/* +"Last Seen mod" plugin for Miranda IM +Copyright ( C ) 2002-03 micron-x +Copyright ( C ) 2005-07 Y.B. + +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. + +File name : $URL: http://svn.berlios.de/svnroot/repos/mgoodies/trunk/lastseen-mod/menu.c $ +Revision : $Rev: 1570 $ +Last change on : $Date: 2007-12-30 01:30:07 +0300 (Вс, 30 дек 2007) $ +Last change by : $Author: y_b $ +*/ +#include "seen.h" + +HANDLE hmenuitem=NULL, hLSUserDet = NULL, hBuildMenu = NULL; + +void ShowHistory(HANDLE hContact, BYTE isAlert); +void InitHistoryDialog(void); + +/* +Handles the messages sent by clicking the contact's menu item +*/ +INT_PTR MenuitemClicked(WPARAM wparam,LPARAM lparam) +{ + ShowHistory((HANDLE)wparam, 0); + return 0; +} + +int BuildContactMenu(WPARAM wparam,LPARAM lparam) +{ + CLISTMENUITEM cmi; + DBVARIANT dbv; + int id=-1,isetting; + HANDLE hContact; + char *szProto; + + hContact = (HANDLE)wparam; + szProto=(char*)CallService(MS_PROTO_GETCONTACTBASEPROTO,(WPARAM)hContact,0); + + ZeroMemory(&cmi,sizeof(cmi)); + cmi.cbSize=sizeof(cmi); + if (!IsWatchedProtocol(szProto) || !DBGetContactSettingByte(NULL,S_MOD,"MenuItem",1)) + { + cmi.flags=CMIM_FLAGS|CMIF_HIDDEN; + } + else + { + cmi.flags=CMIM_NAME|CMIM_FLAGS|CMIM_ICON; + cmi.hIcon=NULL; + cmi.pszName=ParseString(!DBGetContactSetting(NULL,S_MOD,"MenuStamp",&dbv)?dbv.pszVal:DEFAULT_MENUSTAMP,(HANDLE)wparam,0); + + if (!strcmp(cmi.pszName,Translate(""))) + { + if (IsWatchedProtocol(szProto)) + cmi.flags|=CMIF_GRAYED; + else + cmi.flags|=CMIF_HIDDEN; + } + else if(DBGetContactSettingByte(NULL,S_MOD,"ShowIcon",1)) + { + isetting=DBGetContactSettingWord((HANDLE)hContact,S_MOD,"StatusTriger",-1); + cmi.hIcon=LoadSkinnedProtoIcon(szProto,isetting|0x8000); + + } + } + + CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)hmenuitem,(LPARAM)&cmi); + DBFreeVariant(&dbv); + + return 0; +} + + + +void InitMenuitem() +{ + CLISTMENUITEM cmi; + + hLSUserDet = CreateServiceFunction("LastSeenUserDetails", MenuitemClicked); + + ZeroMemory(&cmi,sizeof(cmi)); + cmi.cbSize=sizeof(cmi); + cmi.flags=0; + cmi.hIcon=NULL; + cmi.hotKey=0; + cmi.position=-0x7FFFFFFF; + cmi.pszContactOwner=NULL; + cmi.pszName=""; + cmi.pszService="LastSeenUserDetails"; + hmenuitem = Menu_AddContactMenuItem(&cmi); + + hBuildMenu = HookEvent(ME_CLIST_PREBUILDCONTACTMENU,BuildContactMenu); + + InitHistoryDialog(); +} + +void UninitMenuitem() +{ + DestroyServiceFunction(hLSUserDet); + UnhookEvent(hBuildMenu); +} \ No newline at end of file -- cgit v1.2.3