summaryrefslogtreecommitdiff
path: root/plugins/ExternalAPI/m_alarms.h
blob: 64a77bc2c74f90d49af518ffc657a56bad89f77a (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
#ifndef _ALARMS_H
#define _ALARMS_H

// flags for alarm action
#define AAF_POPUP		0x01				// show a popup window (or a popup from popups plugin, if installed and activated via options)
#define AAF_SOUND		0x02				// play a sound
#define AAF_COMMAND		0x04				// run a command
#define AAF_SYSTRAY		0x08				// flash systray icon (not implemented)

typedef enum { 
	OC_ONCE,								// all fields in time (see below) are valid
	OC_DAILY,								// only wHour, wMinute, and wSecond are valid
	OC_WEEKLY,								// wHour, wMinute, wSecond, and wDayOfWeek are valid
	OC_WEEKDAYS,							// only wHour, wMinute, and wSecond are valid
	OC_MONTHLY,								// wHour, wMinute, wSecond, and wDay are valid
	OC_YEARLY								// all fields except wYear are valid
} Occurrence;

// flags
#define ALF_HIDDEN		0x01				// do not show in GUI (either options or reminder frame)
#define ALF_NOREMINDER	0x02				// do not show in reminder frame
#define ALF_SUSPENDED	0x04				// do not trigger next occurence
#define ALF_NOSTARTUP	0x08				// do not trigger on startup if it was due when miranda was not running
#define ALF_NOSNOOZE	0x10				// do not allow snoozing of this alarm

typedef struct {
	char *szTitle;
	char *szDesc;
	Occurrence occurrence;
	BOOL snoozer;							// this alarm is a 'once-off', the result of the user pressing the 'snooze' button - the time field no longer contains the original alarm time
	SYSTEMTIME time;						// the time the alarm is triggered at - different fields are valid depending on what the 'occurence' value is set to (see definition of Occurence type above)
	unsigned short action;					// bitwise OR of AAF_* constants above
	char *szCommand;						// passed to ShellExecute (if action & AAF_COMMAND) when the alarm is triggered
	char *szCommandParams;					// passed as parameters for above command
	BYTE sound_num;							// use alarm sound 1, 2, or 3 (if action & AAF_SOUND) (4 == speak, version 0.0.7.0+)
	int flags;								// ALF_* above
} ALARMINFO;

// set an alarm
// wparam = 0
// lparam = (ALARMINFO *)&alarm
#define MS_ALARMS_ADDALARM		"Alarms/AddAlarm"

// event sent when an alarm is triggered
// wparam=0
// lparam=(ALARMINFO *)&alarm
// returning non-zero from your hook will prevent the alarm actions from being carried out
#define ME_ALARMS_TRIGGERED		"Alarms/Triggered"

#endif