summaryrefslogtreecommitdiff
path: root/include/m_idle.h
blob: 635fb7a643d64b1996c4474970ca0d6d4939b4c9 (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
/*

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

Copyright (c) 2012-17 Miranda NG project (https://miranda-ng.org)
Copyright (c) 2000-05 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.
*/

#ifndef M_IDLE_H__
#define M_IDLE_H__ 1

/* The idle module checks how long the user has been idle, it can be at the Miranda level
or the OS level - the user has optional two settings, one for "short" idle and another
for "long" idle. Thie module will generate long/short events based on these user preferences
and other information too. If you are unsure which idle mode to report for, report it
for short idle.*/

/*
	wParam: 0
	lParam: IDF_* (or'd field)
	Affect: This event is fired when information about idle changes.
	Note: You will get multiple calls with IDF_ISIDLE set, the first is for short idle
		then long idle, then anytime during you might get IDF_ONFORCE if the screensaver or station
		become locked.

		It is up to you to keep state, i.e. once the idle that you care about is reported
		ignore other status notifications with IDF_ISIDLE set until you get one with IDF_ISIDLE isn't
		set.
	Version: 0.3.4a+ (2004/09/16)
*/

#define IDF_ISIDLE		0x1 // idle has become active (if not set, inactive)
#define IDF_PRIVACY		0x8 // if set, the information provided shouldn't be given to third parties.

#define ME_IDLE_CHANGED "Miranda/Idle/Changed"

/*
	wParam; 0
	lParam: &MIRANDA_IDLE_INFO
	Affect: Return information about current idle settings, like short/long idle time in mins
		and if the user wants that info kept private, etc
	Returns: zero on success, non zero on failure
	Version: 0.3.4 (2004/09/16)
*/

struct MIRANDA_IDLE_INFO
{
	int idleTime;	       // idle in mins, if zero then disabled
	int privacy;		    // user doesnt want other people seeing anything more than they are idle
	int aaStatus;			 // status to go to when user is auto away
	int aaLock;				 // the status shouldn't be unset if its set
	int idleType;
	int idlesoundsoff;
};

#define MS_IDLE_GETIDLEINFO "Miranda/Idle/GetInfo"

__forceinline int Idle_GetInfo(MIRANDA_IDLE_INFO &pInfo)
{
	return CallService(MS_IDLE_GETIDLEINFO, 0, (LPARAM)&pInfo);
}

#endif // M_IDLE_H__