(*

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

Copyright 2000-2003 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_SKIN}
{$DEFINE M_SKIN}

const

    // event icons

    SKINICON_EVENT_MESSAGE		= 100;
    SKINICON_EVENT_URL			= 101;
    SKINICON_EVENT_FILE			= 102;

    // other icons
    SKINICON_OTHER_MIRANDA		= 200;
    SKINICON_OTHER_EXIT			= 201;
    SKINICON_OTHER_SHOWHIDE		= 202;
    SKINICON_OTHER_GROUPOPEN    = 203; // v0.1.1.0+
    SKINICON_OTHER_GROUPSHUT    = 205; // v0.1.1.0+
    SKINICON_OTHER_USERONLINE   = 204; // v0.1.0.1+

    // menu icons are owned by the module that uses them so are not and should not
    // be skinnable. Except exit and show/hide

    // status mode icons. NOTE: These are deprecated in favour of LoadSkinnedProtoIcon()
    SKINICON_STATUS_OFFLINE	    = 0;
    SKINICON_STATUS_ONLINE		= 1;
    SKINICON_STATUS_AWAY		= 2;
    SKINICON_STATUS_NA			= 3;
    SKINICON_STATUS_OCCUPIED	= 4;
    SKINICON_STATUS_DND			= 5;
    SKINICON_STATUS_FREE4CHAT	= 6;
    SKINICON_STATUS_INVISIBLE	= 7;
    SKINICON_STATUS_ONTHEPHONE	= 8;
    SKINICON_STATUS_OUTTOLUNCH	= 9;

type

    PSKINSOUNDDESC = ^TSKINSOUNDDESC;
    TSKINSOUNDDESC = record
        cbSize: int;
        { name to refer to sound when playing and in DB }
        pszName: PChar;
        { description to use for it in options dialog }
        pszDescription: PChar;
        { the default sound file to use, WITHOUT path }
        pszDefaultFile: PChar;
    end;

const

    {
        wParam : ICON_ID
        lParam : 0
        Affect : Load an icon from the user's custom skin lib, or from the exe
                 if there isn't one loaded, see notes
        Return : HICON for the new icon, do *not* DestroyIcon() the return value
                 returns NULL(0) if ICON_ID is invalid, but always success for a valid
                 ID.
    }
    MS_SKIN_LOADICON            = 'Skin/Icons/Load';

    {
        wParam : null terminated string containing the protocol name
        lParam : status_wanted
        Affect : Load an icon representing the status_wanted for a particular protocol, see notes
        Returns: an HICON for the new icon, do NOT DestroyIcon() the return value
                 returns NULL(0) on failure.
        Notes  : If wParam is NULL(0) the service will load the user's selected
                 'all protocols' status icon
    }
    MS_SKIN_LOADPROTOICON       = 'Skin/Icons/LoadProto';

    {
        wParam : 0
        lParam : Pointer to a initialised SKINSOUNDDESC
        Affect : Add a new sound so it has a default and can be changed in the options dialog
        Returns: 0 on success, [non zero] on failure
    }
    MS_SKIN_ADDNEWSOUND         = 'Skin/Sounds/AddNew';

    {
        wParam : 0
        lParam : Pointer to a null terminated string containing the name of the sound to play
        Affect : play a named sound event, play name should of been added
                 with MS_SKIN_ADDNEWSOUND,  see notes
        Notes  : function will not fail, it will play the Windows
    }
    MS_SKIN_PLAYSOUND           = 'Skin/Sounds/Play';

    {
        wParam : 0
        lParam : 0
        Affect : Sent when the icons DLL has been changed in the options dialog
                 and everyone should remake their image lists.
    }
    ME_SKIN_ICONSCHANGED        = 'Skin/IconsChanged';

{$ENDIF}
