summaryrefslogtreecommitdiff
path: root/plugins/!NotAdopted/SmartAutoAway/saa.cpp
blob: 0bcc701c0d0fe7372939e36fd555083c4532c607 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/*

Miranda IM: the free IM client for Microsoft* Windows*

Copyright 2000-2006 Miranda ICQ/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 "saa.h"

int InitVariables( WPARAM wParam, LPARAM lParam );


PLUGINLINK *pluginLink;
HINSTANCE g_hInst;

PLUGININFOEX pluginInfo = {
    sizeof(PLUGININFOEX),
#ifdef AALOG
	SECTIONNAME " - Debug",
#else
	SECTIONNAME,
#endif
#include "version.txt"
	UNICODE_AWARE,
    DEFMOD_RNDAUTOAWAY,            // replace internal version (if any)
#if defined( _UNICODE )
	{0xec29e895,0x9f97,0x4cb1,{0xac, 0x9b, 0xb1, 0xae, 0x88, 0x25, 0x8b, 0x4a} /* EC29E895-9F97-4cb1-AC9B-B1AE88258B4A */}
#else
	{0x19c5be89,0xf7e3,0x4632,{0xa1, 0x25, 0x15, 0xf3, 0x84, 0xcd, 0x0c, 0xd3} /* 19c5be89-f7e3-4632-a125-15f384cd0cd3 */}
#endif
};

static	HMODULE           hUxTheme = 0;
BOOL (WINAPI *enableThemeDialogTexture)(HANDLE, DWORD) = 0;


extern "C" BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    g_hInst = hinstDLL;
    return TRUE;
}
static	char description[1023];

#ifdef AALOG
	static BOOL warningShown = 0;
#endif
static bool isNewMiranda = false;
extern "C" __declspec(dllexport) PLUGININFOEX *MirandaPluginInfo(DWORD mirandaVersion)
{

	sprintf(description,"Highly configurable AutoAway/Idle/Reconnect system");
#ifdef AALOG
	sprintf(description,"%s\r\nThis is the debug version. It will make a lot of noise through Netlib log",description);
	if (!warningShown) {
		MessageBoxA(0,description,pluginInfo.shortName,MB_ICONINFORMATION);
		warningShown = 1;
	}
#endif
	if ((mirandaVersion>=0x00030400) && (!isNewMiranda)) {
		sprintf(description,"%s\r\n%s",description,"Miranda %d.%d.%d.%d has build-in \"Idle\" support and it is highly advisable to suppress it by putting SAANI.dll in plugins directory.");
		sprintf(description,description, // Yes, I realize this is strange approach...
			mirandaVersion>>24&0xFF,
			mirandaVersion>>16&0xFF,
			mirandaVersion>>8&0xFF,
			mirandaVersion&0xFF
		);
	};

	pluginInfo.description = description;
	if ( mirandaVersion < PLUGIN_MAKE_VERSION( 0,7,0,17 )) pluginInfo.cbSize = sizeof( PLUGININFO );
    return &pluginInfo;
}

extern "C" __declspec(dllexport) PLUGININFOEX * MirandaPluginInfoEx(DWORD mirandaVersion)
{
	isNewMiranda=true;
	return MirandaPluginInfo(mirandaVersion);
}

extern "C" __declspec(dllexport) const MUUID interfaces[] = {MIID_AUTOAWAY, MIID_IDLE, MIID_LAST};
extern "C" __declspec(dllexport) const MUUID * MirandaPluginInterfaces(void)
{
	return interfaces;
}

extern "C" int __declspec(dllexport) Load(PLUGINLINK * link)
{
	pluginLink = link;
	LoadAutoAwayModule();
    hUxTheme = GetModuleHandle(_T("uxtheme.dll"));
    if(hUxTheme)
       enableThemeDialogTexture = (BOOL (WINAPI *)(HANDLE, DWORD))GetProcAddress(hUxTheme, "EnableThemeDialogTexture");
	return 0;
}

extern "C" int __declspec(dllexport) Unload(void)
{
//	AutoAwayShutdown(0,0);
//#ifdef AALOG
//	CallService("Netlib/Log" ,(WPARAM)hNetlib ,(LPARAM)"Killing Timer");
//#endif
//	KillTimer(NULL, hIdleTimer);
//#ifdef AALOG
//	CallService("Netlib/Log" ,(WPARAM)hNetlib ,(LPARAM)"DestroyHookableEvent(hIdleEvent)");
//#endif
//	DestroyHookableEvent(hIdleEvent);

    if(hUxTheme != 0)
        FreeLibrary(hUxTheme);

    return 1; //if 1 we dont want to shutdown because we have hooked ME_SYSTEM_SHUTDOWN
}