{ Miranda IM: the free IM client for Microsoft Windows Copyright © 2004 Universite Louis PASTEUR, STRASBOURG. Copyright © 2004 Scott Ellis (www.scottellis.com.au mail@scottellis.com.au) 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_METACONTACTS} {$DEFINE M_METACONTACTS} const // standard module for all mc-related information META_PROTO = 'MetaContacts'; const { gets the handle for the 'most online' contact wParam=(HANDLE)hMetaContact lParam=0 returns a handle to the 'most online' contact } MS_MC_GETMOSTONLINECONTACT = 'MetaContacts/GetMostOnline'; { forces the metacontact to send using a specific subcontact, using the subcontact's contact number wParam=(HANDLE)hMetaContact lParam=(dword)contact number returns 0 on success } MS_MC_FORCESENDCONTACTNUM = 'MetaContacts/ForceSendContact'; { forces the metacontact to send using a specific subcontact, using the subcontact's handle wParam=(HANDLE)hMetaContact lParam=(HANDLE)hSubcontact returns 0 on success (will fail if 'force default' is in effect) } MS_MC_FORCESENDCONTACT = 'MetaContacts/ForceSendContactByHandle'; { 'unforces' the metacontact to send using a specific subcontact wParam=(HANDLE)hMetaContact lParam=0 returns 0 on success (will fail if 'force default' is in effect) } MS_MC_UNFORCESENDCONTACT = 'MetaContacts/UnforceSendContact'; { 'forces' or 'unforces' (i.e. toggles) the metacontact to send using it's default contact overrides (and clears) 'force send' above, and will even force use of offline contacts will send ME_MC_FORCESEND or ME_MC_UNFORCESEND event wParam=(HANDLE)hMetaContact lParam=0 returns 1(true) or 0(false) representing new state of 'force default' } MS_MC_FORCEDEFAULT = 'MetaContacts/ForceSendDefault'; { method to get state of 'force' for a metacontact wParam=(HANDLE)hMetaContact lParam= (dword)&contact_number or NULL if lparam supplied, the contact_number of the contatct 'in force' will be copied to the address it points to, or if none is in force, the value INVALID_CONTACT_ID will be copied (v0.8.0.8+ returns 1 if 'force default' is true with *lParam == default contact number, else returns 0 with *lParam as above) } MS_MC_GETFORCESTATE = 'MetaContacts/GetForceState'; { fired when a metacontact's default contact changes (fired upon creation of metacontact also, when default is initially set) wParam=(HANDLE)hMetaContact lParam=(HANDLE)hDefaultContact } ME_MC_DEFAULTTCHANGED = 'MetaContacts/DefaultChanged'; { fired when a metacontact's subcontacts change (fired upon creation of metacontact, when contacts are added or removed, and when contacts are reordered) - a signal to re-read metacontact data wParam=(HANDLE)hMetaContact lParam=0 } ME_MC_SUBCONTACTSCHANGED = 'MetaContacts/SubcontactsChanged'; { fired when a metacontact is forced to send using a specific subcontact wParam=(HANDLE)hMetaContact lParam=(HANDLE)hForceContact } ME_MC_FORCESEND = 'MetaContacts/ForceSend'; { fired when a metacontact is 'unforced' to send using a specific subcontact wParam=(HANDLE)hMetaContact lParam=0 } ME_MC_UNFORCESEND = 'MetaContacts/UnforceSend'; { wParam=(HANDLE)hContact lParam=0 convert a given contact into a metacontact } MS_MC_CONVERTTOMETA = 'MetaContacts/ConvertToMetacontact'; { wParam=(HANDLE)hContact lParam=(HANDLE)hMeta add an existing contact to a metacontact } MS_MC_ADDTOMETA = 'MetaContacts/AddToMetacontact'; { wParam=0 lParam=(HANDLE)hContact remove a contact from a metacontact } MS_MC_REMOVEFROMMETA = 'MetaContacts/RemoveFromMetacontact'; ///////////////////////////////////////////////////////////////////////////////////////// // binary interface to MC { returns true if metacontacts are enabled or false otherwise } function db_mc_isEnabled():bool; stdcall; external CoreDLL name 'db_mc_isEnabled'; { returns true if a contact is a metacontact or false otherwise } procedure db_mc_enable(bEnabled:bool); stdcall; external CoreDLL name 'db_mc_enable'; { returns true if a contact is a metacontact or false otherwise } function db_mc_isMeta(hContact:TMCONTACT):LongBool; stdcall; external CoreDLL name 'db_mc_isMeta'; { returns true if a contact is a subcontact or false otherwise } function db_mc_isSub(hContact:TMCONTACT):LongBool; stdcall; external CoreDLL name 'db_mc_isSub'; { gets the handle for the default contact or 0 on error } function db_mc_getDefault(hContact:TMCONTACT):TMCONTACT; stdcall; external CoreDLL name 'db_mc_getDefault'; { gets the contact number for the default contact or -1 on error } function db_mc_getDefaultNum(hContact:TMCONTACT):int; stdcall; external CoreDLL name 'db_mc_getDefaultNum'; { returns a meta contact for a subcontact or 0 otherwise } function db_mc_getMeta(hContact:TMCONTACT):TMCONTACT; stdcall; external CoreDLL name 'db_mc_getMeta'; { returns a subcontact with the given index or 0 } function db_mc_getSub(hContact:TMCONTACT; idx:int):TMCONTACT; stdcall; external CoreDLL name 'db_mc_getSub'; { gets the number of subcontacts for a metacontact or -1 on error } function db_mc_getSubCount(hContact:TMCONTACT):int; stdcall; external CoreDLL name 'db_mc_getSubCount'; { sets the default contact, using the subcontact's handle } function db_mc_setDefault(hContact,hSub:TMCONTACT):int; stdcall; external CoreDLL name 'db_mc_setDefault'; { sets the default contact, using the subcontact's number } function db_mc_setDefaultNum(hContact:TMCONTACT; idx:int):int; stdcall; external CoreDLL name 'db_mc_setDefaultNum'; {$ENDIF}