diff options
Diffstat (limited to 'plugins/HistorySweeperLight/main.cpp')
| -rw-r--r-- | plugins/HistorySweeperLight/main.cpp | 185 | 
1 files changed, 185 insertions, 0 deletions
diff --git a/plugins/HistorySweeperLight/main.cpp b/plugins/HistorySweeperLight/main.cpp new file mode 100644 index 0000000000..3174ab1369 --- /dev/null +++ b/plugins/HistorySweeperLight/main.cpp @@ -0,0 +1,185 @@ +/*
 +Miranda IM History Sweeper Light plugin
 +Copyright (C) 2002-2003  Sergey V. Gershovich
 +Copyright (C) 2006-2009  Boris Krasnovskiy
 +Copyright (C) 2010, 2011 tico-tico
 +
 +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 "historysweeperlight.h"
 +#include "version.h"
 +
 +HINSTANCE hInst;
 +PLUGINLINK *pluginLink; 
 +
 +struct MM_INTERFACE mmi;
 +
 +static HANDLE hHooks[5];
 +int hLangpack;
 +
 +static PLUGININFOEX pluginInfoEx =
 +{ 
 +	// about plugin
 +	sizeof(PLUGININFOEX),
 +	"History Sweeper Light",
 +	__VERSION_DWORD,
 +	"This plugin can sweep system history, history from all contacts or only from chosen; also it may sweep history older than certain time; and may do it at Miranda IM startup/shutdown.",
 +	"Sergey V. Gershovich a.k.a. Jazzy$, Boris Krasnovskiy, tico-tico",
 +	"",
 +	"© 2002-2003 Sergey V. Gershovich a.k.a. Jazzy$, 2006-2009 Boris Krasnovskiy, 2010, 2011 tico-tico",
 +	"",
 +	UNICODE_AWARE,
 +	0,
 +	MIID_HISTORYSWEEPERLIGHT
 +};
 +
 +BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
 +{
 +	hInst=hinstDLL;
 +	return TRUE;
 +}
 +
 +int OnIconPressed(WPARAM wParam, LPARAM lParam) 
 +{
 +	StatusIconClickData *sicd = (StatusIconClickData *)lParam;
 +
 +	if ( !(sicd->flags & MBCF_RIGHTBUTTON) && !lstrcmpA(sicd->szModule, ModuleName) 
 +		&& DBGetContactSettingByte(NULL, ModuleName, "ChangeInMW", 0))
 +	{
 +		int nh = sicd->dwId; HANDLE hContact = (HANDLE)wParam; StatusIconData sid = {0};
 +
 +		sid.cbSize = sizeof(sid);
 +		sid.szModule = ModuleName;
 +		sid.dwId = nh;
 +		sid.flags = MBF_HIDDEN;
 +		CallService(MS_MSG_MODIFYICON, (WPARAM)hContact, (LPARAM)&sid);	
 +		
 +		nh = (nh + 1) % 4;
 +		DBWriteContactSettingByte((HANDLE)wParam, ModuleName, "SweepHistory", (BYTE)nh);
 +
 +		sid.dwId = nh;
 +		sid.flags = 0;
 +		CallService(MS_MSG_MODIFYICON, (WPARAM)hContact, (LPARAM)&sid);
 +	}
 +	return 0;
 +}
 +
 +
 +int OnModulesLoaded(WPARAM wParam, LPARAM lParam) 
 +{
 +	StatusIconData sid = {0};
 +	int i, sweep = DBGetContactSettingByte(NULL, ModuleName, "SweepHistory", 0);
 +	HANDLE hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDFIRST, 0, 0);
 +
 +	sid.cbSize = sizeof(sid);
 +	sid.szModule = ModuleName;
 +
 +	sid.hIcon = LoadIconEx("actG");
 +	if (sweep == 0)
 +		sid.szTooltip = Translate("Keep all events");
 +	else if (sweep == 1)
 +	{
 +		sid.szTooltip = Translate(time_stamp_strings[DBGetContactSettingByte(NULL, ModuleName, "StartupShutdownOlder", 0)]);
 +	}
 +	else if (sweep == 2)
 +	{
 +		sid.szTooltip = Translate(keep_strings[DBGetContactSettingByte(NULL, ModuleName, "StartupShutdownKeep", 0)]);
 +	}
 +	else if (sweep == 3)
 +	{
 +		sid.szTooltip = Translate("Delete all events");
 +	}
 +	sid.flags = MBF_HIDDEN;
 +	CallService(MS_MSG_ADDICON, 0, (LPARAM)&sid);
 +
 +	sid.dwId = 1;
 +	sid.hIcon = LoadIconEx("act1");
 +	sid.szTooltip = Translate(time_stamp_strings[DBGetContactSettingByte(NULL, ModuleName, "StartupShutdownOlder", 0)]);
 +	sid.flags = MBF_HIDDEN;
 +	CallService(MS_MSG_ADDICON, 0, (LPARAM)&sid);
 +
 +	sid.dwId = 2;
 +	sid.hIcon = LoadIconEx("act2");
 +	sid.szTooltip = Translate(keep_strings[DBGetContactSettingByte(NULL, ModuleName, "StartupShutdownKeep", 0)]);
 +	sid.flags = MBF_HIDDEN;
 +	CallService(MS_MSG_ADDICON, 0, (LPARAM)&sid);
 +
 +	sid.dwId = 3;
 +	sid.hIcon = LoadIconEx("actDel");
 +	sid.szTooltip = Translate("Delete all events");
 +	sid.flags = MBF_HIDDEN;
 +	CallService(MS_MSG_ADDICON, 0, (LPARAM)&sid);
 +	
 +	// for new contacts
 +	while ( hContact != NULL )
 +	{
 +		ZeroMemory(&sid,sizeof(sid));
 +
 +		sweep = DBGetContactSettingByte(hContact, ModuleName, "SweepHistory", 0);
 +
 +		sid.cbSize = sizeof(sid);
 +		sid.szModule = ModuleName;
 +		
 +		for(i = 0; i < 4; i++)
 +		{
 +			sid.dwId = i;
 +			sid.flags = (sweep == i) ? 0 : MBF_HIDDEN;
 +			CallService(MS_MSG_MODIFYICON, (WPARAM)hContact, (LPARAM)&sid);
 +		}
 +
 +		hContact = (HANDLE)CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM)hContact, 0);
 +	}
 +
 +	hHooks[2] = HookEvent(ME_MSG_WINDOWEVENT, OnWindowEvent);
 +	hHooks[3] = HookEvent(ME_MSG_ICONPRESSED, OnIconPressed);
 +
 +	return 0;
 +}
 +
 +__declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion)
 +{
 +	return &pluginInfoEx;
 +}
 +
 +int __declspec(dllexport) Load(PLUGINLINK *link)
 +{
 +	pluginLink = link;
 +
 +	mir_getMMI(&mmi);
 +	mir_getLP(&pluginInfoEx);
 +
 +	hHooks[0] = HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded);
 +	hHooks[1] = HookEvent(ME_OPT_INITIALISE, HSOptInitialise);
 +	
 +	InitIcons();
 +
 +	return 0;
 +}
 +
 +int __declspec(dllexport) Unload(void)
 +{ 
 +	int i;
 +
 +	ShutdownAction();
 +
 +	for (i = 0; i < SIZEOF(hHooks); i++)
 +	{
 +		if (hHooks[i])
 +			UnhookEvent(hHooks[i]);
 +	}
 +
 +	return 0;
 +}
  | 
