summaryrefslogtreecommitdiff
path: root/plugins/ExternalAPI/delphi/m_yamn.inc
blob: 300f5a3dac1d0ac2a580187c17c18ce7bc4f2364 (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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
{$IFNDEF M_YAMN}
{$DEFINE M_YAMN}

//
//================================== VARIABLES STRUCT ========================================
//

{$IFNDEF MIRANDASERVICE}
type
  MIRANDASERVICE = function(WPARAM,LPARAM:int):int; cdecl;
{$ENDIF}

const
 YAMN_VARIABLESVERSION = 3;

type
  PYAMN_VARIABLES = ^TYAMN_VARIABLES;
  TYAMN_VARIABLES = record
    hInst:HINSTANCE;
    MessageWnds:THANDLE;
    NewMailAccountWnd:THANDLE;
    Shutdown:int;
  end;
  CYAMNVariables = TYAMN_VARIABLES;

//
//================================== EXPORTED FUNCTIONS STRUCT ===============================
//
type
  CExportedFunctions = record
    ID:PAnsiChar;
    Ptr:pointer;
  end;

type
  CExportedServices = record
    ID:PAnsiChar;
    Ptr:MIRANDASERVICE;
  end;

//
//================================== YAMN EVENTS ==================================
//

const
//UninstallPlugin Event
//Sent when user wants to uninstall YAMN and all its plugins
  ME_YAMN_UNINSTALLPLUGINS = 'YAMN/MirandaEvents/UninstallPlugins';

//NewMail Event
//Notifies you about new mail
//no arguments now (Developers, send mail, which params would you like to have, but note there's problem that
//params are 32b numbers. When it is pointer to some data, these data should persist while every plugin read them and
//after that they can be removed from memory. So it is problem)
  ME_YAMN_NEWMAIL = 'YAMN/MirandaEvents/NewMail';

//
//================================== YAMN SERVICES ==================================
//

//GetFcnPtr Service
//Your plugin can co-operate with YAMN in 2 ways: with Miranda services and with YAMN exported functions
//Some commands are written in services, some are functions. The advantage of function calling instead of
//service calling is, that your code is more clear and it is faster than service calling (smaller, FASTER,
//easier- it is slogan of Miranda, isn't it ?). Miranda service has only 2 parameters, that can be
//disadvantage too.
//In every way, it is discutable which functions should be exported or if they should be implemented as
//services. And if YAMN should export some functions etc. Functions not used very often are now implemented
//as Miranda services.
//
//This service gets pointer to YAMN function. Then you can use function directly. In m_?????.h files you have
//definitions of some functions, with definitions of structure variable, so you can use functions very
//clearly, just look to header file.
//WPARAM- function ID. It is string representating function you need to get pointer (e.g. YAMN_WRITEWAITID)
//LPARAM- not used now, but set it to 0
//returns pointer to YAMN function or NULL when functions does not exist
  MS_YAMN_GETFCNPTR = 'YAMN/Service/GetFcn';

//GetVariables Service
//Ask YAMN for pointer to CYAMNVariables structure.
//WPARAM- YAMN_VARIABLESVERSION
//LPARAM- any value
//returns pointer to YAMN_VARIABLES or NULL when version of structure does not match
  MS_YAMN_GETVARIABLES = 'YAMN/Service/GetVar';

//ForceCheck Service
//Check mail on accounts
//WPARAM- not used
//LPARAM- not used
  MS_YAMN_FORCECHECK = 'YAMN/Service/ForceCheck';

//AccountCheck Service
//Check mail on individual account
//WPARAM- HACCOUNT
//LPARAM- not used
  MS_YAMN_ACCOUNTCHECK = 'YAMN/Service/AccountCheck';

//Contact List Context Menu Click
//wParam=(WPARAM)hContact
//lParam=0
//
//Event is fired when there is a double click on a CList contact,
//it is upto the caller to check for the protocol & status
//of the MCONTACT, it's not done for you anymore since it didn't make
//sense to store all this information in memory, etc.
  MS_YAMN_CLISTCONTEXT = 'YAMN/Service/ClistContactContextMenu';

//Contact List Context Menu Click for application
//wParam=(WPARAM)hContact
//lParam=0
//
//Event is fired when there is a double click on a CList contact,
//it is upto the caller to check for the protocol & status
//of the MCONTACT, it's not done for you anymore since it didn't make
//sense to store all this information in memory, etc.
  MS_YAMN_CLISTCONTEXTAPP = 'YAMN/Service/ClistContactContextMenuApp';

//Contact List Double Click
//wParam=(WPARAM)hContact
//lParam=0
//
//Event is fired when there is a double click on a CList contact,
//it is upto the caller to check for the protocol & status
//of the MCONTACT, it's not done for you anymore since it didn't make
//sense to store all this information in memory, etc.
  MS_YAMN_CLISTDBLCLICK = 'YAMN/Service/ClistContactDoubleclicked';

//FilterMail Service
//Ask YAMN to process mail filtering. YAMN calls filter plugins to mark mail as spam etc... Warning! Leave all
//read or write access to mail as this function waits for write-access to mail!
//WPARAM- (HACCOUNT) account to which mail belongs
//LPARAM- (HYAMNMAIL) mail to filter
  MS_YAMN_FILTERMAIL = 'YAMN/Service/FilterMail';

//MailBrowser Service
//runs mail browser window (or tray icon only or popups only)
//WPARAM- pointer to YAMN_MAILBROWSERPARAM structure, data to mailbrowser. You do not need to fill ThreadRunningEV event member.
//LPARAM- YAMN_MAILBROWSERPARAM structure version param. Use YAMN_MAILBROWSERVERSION definition.
//returns zero if failed, nonzero if succeed
  MS_YAMN_MAILBROWSER = 'YAMN/Service/RunMailBrowser';

//NoNewMail Service
//runs no new mail procedure (shows popups e.g.)
//WPARAM- pointer to YAMN_NONEWMAILPARAM structure, data to no new mail procedure. You do not need to fill ThreadRunningEV event member.
//LPARAM- YAMN_NONEWMAILPARAM structure version param. Use YAMN_NONEWMAILVERSION definition.
//returns zero if failed, nonzero if succeed
  MS_YAMN_NONEWMAILPROC = 'YAMN/Service/NoNewMailProc';

//BadConnection Service
//runs bad connection window
//WPARAM- pointer to YAMN_BADCONNECTIONPARAM structure, data to mailbrowser. You do not need to fill ThreadRunningEV event member.
//LPARAM- YAMN_BADCONNECTIONPARAM structure version param. Use YAMN_BADCONNECTIONVERSION definition.
//returns zero if failed, nonzero if succeed
  MS_YAMN_BADCONNECTION = 'YAMN/Service/BadConnection';

{$ENDIF}