/****************************************/
/*                                      */
/*            QIP INFIUM SDK            */
/*         Copyright(c) Ilham Z.        */
/*   ilham@qip.ru    http://www.qip.im  */
/*                                      */
/****************************************/

/****************************************/
/*                                      */
/*    C++ port by Alexander Yastrebov   */
/*       yastrebov.alex@gmail.com       */
/*                                      */
/*          Update by  Dr.Boom          */
/*            Dr.Boom@qip.ru            */
/*                                      */
/****************************************/

/****************************************/
/*                                      */
/*            Special Thanks:           */
/*                                      */
/*   Mihaylov Andrey aka AbsoluteZero   */
/*     Matafonov Steve aka BKnight      */
/*     Marynchuk Andrey aka Radist      */
/*                                      */
/****************************************/

#pragma once

// Plugin specific options which will be saved in profile
//see http://wiki.qip.ru/SDK_Types#TPluginSpecific 
struct TPluginSpecific 
{
    bool		Bool1;
    bool		Bool2;
    bool		Bool3;
    bool		Bool4;
    bool		Bool5;
    bool		Bool6;
    bool		Bool7;
    bool		Bool8;
    bool		Bool9;
    bool		Bool10;

    DWORD		Param1;
    DWORD		Param2;
    DWORD		Param3;
    DWORD		Param4;
    DWORD		Param5;
    DWORD		Param6;
    DWORD		Param7;
    DWORD		Param8;
    DWORD		Param9;
    DWORD		Param10;

    BSTR		Wstr1;
    BSTR		Wstr2;
    BSTR		Wstr3;
    BSTR		Wstr4;
    BSTR		Wstr5;
    BSTR		Wstr6;
    BSTR		Wstr7;
    BSTR		Wstr8;
    BSTR		Wstr9;
    BSTR		Wstr10;
};

// Adding button below avatar in msg window
//see http://wiki.qip.ru/SDK_Types#TAddBtnInfo 
struct TAddBtnInfo
{
    HICON BtnIcon;      //size must be 16x16, if you creating new HICON then after adding button dont forget to destroy it in your plugin.
    long BtnPNG;        //size must be 16x16, LongInt(TPngObject) from PngImage library, delphi only. Else have to be 0. After adding button dont forget to destroy it in your plugin.
    BSTR BtnHint;       //hint of the button
    long BtnData;       //pointer of plugin specified data, will be returned on click. Since sdk 1.6.

};

// plugins only
//see http://wiki.qip.ru/SDK_Types#TBtnClick 
struct TBtnClick
{
    long    BtnData; //pointer of plugin specified data. Since sdk 1.6.
    bool    RightClick; //in case if user right clicked on btn
};

//QIP Colors, delphi bgr
//see http://wiki.qip.ru/SDK_Types#TQipColors 
struct TQipColors
{
    long AccBtnText;
    long AccBtn;
    long AccBtnGrad;
    long AccBtnFrameL;
    long AccBtnFrameD;
    long Divider;
    long Group;
    long Counter;
    long Online;
    long Offline;
    long NotInList;
    long OffMsg;
    long Focus;
    long FocusGrad;
    long FocusFrame;
    long Hint;
    long HintGrad;
    long HintFrame;
    long IncEvents;
    long OutEvents;
    long FadeTitle;
    long FadeText;
    long TabBorder;
    long TabBorderDrk;
    long TabInactive;
    long TabInactGrad;
    long TabActive;
    long TabActGrad;
    long TabActLiTop;
    long TabActLight;
    long TabFontInact;
    long TabFontAct;
    long ChatTopic;
    long ChatTime;
    long ChatOwnNick;
    long ChatContNick;
    long ChatOwnText;
    long ChatContText;
    long ChatJoined;
    long ChatLeft;
    long ChatDiscon;
    long ChatNotice;
    long ChatHighLi;
    long ChatInfoText;
    long ChatActText;
	long ChatKickText;
    long ChatModeText;
    bool BgPicClOff;
    bool BgPicMsgOff;
    bool BgPicChatOff;
    long BgClColor;
    long BgMsgColor;
    long BgChatColor;
    long HistContacts;
    long XStTextColor;
    long RootSlctdColor;
    long ContactSlctdClr;
};

  //see http://wiki.qip.ru/SDK_Types#TOverlayIcon 
  struct TOverlayIcon
  {
    long Memory;    //Pointer to existing memory. supports BMP, JPG and PNG here
    long MemoryLen;    //memory length
  };

  struct TQipSkinFont
  {
    BSTR Name;
    long Size;
    long GroupFontSize;
  };
  
  //see http://wiki.qip.ru/SDK_Types#TNotifInfo 
  struct TNotifInfo
  {
    long IconID; //add to imagelist with PM_PLUGIN_NOTIF_ADD_ICON to get. -1 means no icon
    BSTR Text;
    BSTR FromText;//by default message will be equal to plugin name. set this field to override it
    long Buttons;  //see NIB_XXX consts
    BSTR UserBtnText1;
    BSTR UserBtnText2;
    long NotifData;
    bool Incoming;
  };

  // see http://wiki.qip.ru/SDK_Types#TDropFilesInfo 
  struct TDropFilesInfo
  {
    long FileCount;
    BSTR FileList; //list of files separated by CRLF
    bool ToChat;    //true if files are sent into chat
    BSTR AccountName; //accountname or chatname
    long ProtoHandle;
    TBtnClick DropBtnInfo;  //optional BtnData if files are dropped to plugin button
  };
