API.h

From LIVECHAT Developer Zone Wiki

Jump to: navigation, search
////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2007 LIVECHAT Sp z o.o. (www.livechatinc.com)
// All rights reserved.
//
// Implementation of the LIVECHAT Operator
// Created on: 03-10-2007 6:00:00
// Author: LIVECHAT Team (devel@livechatinc.com)
//				 
// Redistribution and use in source and binary forms, with or without
// modification, are NOT permitted !
// 
/////////////////////////////////////////////////////////////////////////
#pragma once 

//////////////////////////////////////////////////////
/// LIVECHAT API 0.1.10

// Services
#define SVC_CREATE_TOOLBAR					_T("CreateToolbar")		//deprecated
#define SVC_ADD_TOOLBARITEM					_T("AddToolbarItem")
#define SVC_ADD_CHATBARITEM					_T("AddChatBarItem")
#define SVC_ADD_PANEL						_T("AddPanel")
#define SVC_ADD_MENUITEM					_T("AddContactsMenuItem")
#define SVC_ADD_STATUSBARITEM				_T("AddStatusBarItem")
#define SVC_ADD_BARPANE						_T("AddBarPane")		//deprecated
#define SVC_CREATE_INFOBAR					_T("CreateInfoBar")
#define SVC_MESSAGEBOX						_T("MessageBox")
#define SVC_ADD_WEB_PANEL					_T("AddWebPanel")
#define SVC_NAVIGATE_PANEL					_T("NavigatePanel")
#define SVC_GET_PANEL_URL					_T("GetPanelUrl")
#define SVC_SHOW_PREFERENCES_PAGE			_T("ShowPreferencesPage")
#define	SVC_ADD_PREFERENCES_CONTROL			_T("AddPreferencesControl")
#define	SVC_ADD_PREFERENCES_PAGE			_T("AddPreferencesPage")
#define SVC_SHOW_PLUGIN_PREFERENCES_PAGE	_T("ShowPluginPreferencesPage")
#define SVC_SET_PREFERENCES_VALUE			_T("SetPreferenceValue")
#define SVC_GET_PREFERENCES_VALUE			_T("GetPreferenceValue")
#define SVC_REMOVE_PREFERENCES_VALUE		_T("RemovePreferenceValue")
#define SVC_SET_PROPERTY					_T("SetProperty")
#define SVC_GET_PROPERTY					_T("GetProperty")
#define	SVC_SET_REGPROPERTY					_T("SetRegProperty")	//deprecated
#define SVC_GET_REGPROPERTY					_T("GetRegProperty")	//deprecated
#define SVC_GET_SESSION_PROP				_T("GetSessionProperty")
#define SVC_GET_SETTINGS_PROP				_T("GetSettingsProperty")
#define SVC_ADD_PROTOCOL					_T("AddProtocolPlugin")
#define SVC_GET_PROTOCOL_ACCOUNT			_T("GetProtocolAccount")
#define SVC_ADD_BUDDY						_T("AddBuddyInfo")
#define SVC_NEW_MESSAGE						_T("NewMessage")
#define SVC_SET_BUDDY_STATUS				_T("SetBuddyStatus")
#define SVC_GET_BUDDYLIST					_T("GetBuddyList")
#define SVC_SET_PROTOCOL_STATUS				_T("SetProtocolStatus")
#define SVC_SET_STATUS						_T("SetStatus")
#define SVC_GET_STATUS						_T("GetStatus")
#define SVC_GET_PREVIOUS_STATUS				_T("GetPreviousStatus")
#define SVC_MAKE_UUID						_T("MakeUuidString")
#define SVC_DETAG							_T("Detag")
#define SVC_LOG								_T("PluginLog")
#define SVC_HAS_BUDDY						_T("HasBuddy")
#define SVC_HAS_VISITOR						_T("HasVisitor")
#define SVC_GET_BUDDY_PROP					_T("GetBuddyProperty")
#define SVC_GET_BUDDY_DISPNAME				_T("GetBuddyDispname")
#define SVC_ADD_PHONE						_T("AddPhone")
#define SVC_SET_CALLBACK_STATUS				_T("SetCallbackStatus")
#define SVC_PLAY_SOUND						_T("PlayEventSound")
#define SVC_SEND_COMMAND					_T("SendCommand")
#define SVC_SEND_MESSAGE					_T("SendMessage")
#define SVC_GET_CHAT_PROTOCOL				_T("GetChatProtocol")
#define SVC_GET_CHAT_GROUP					_T("GetChatGroup")
#define SVC_SHOW_IMPORT_DIALOG				_T("ShowImportDialog")
#define SVC_GET_CONTACT_ID					_T("GetContactID")

// Hooks
#define HOOK_EVENT							_T("OnEvent")
#define HOOK_COMMAND						_T("OnCommand")
#define HOOK_LANGUAGE_CHANGED				_T("LanguageChanged")
#define HOOK_PREFERENCES_CHANGED			_T("PreferencesChanged")

// Settings
#define PROP_LANGUAGE						_T("LanguageString")

// Session
#define PROP_LOCAL_ADDRESS					_T("LocalAddress")
#define PROP_REMOTE_ADDRESS					_T("RemoteAddress")
#define PROP_SYSTEM_ADDRESS					_T("SystemAddress")
#define PROP_SYSTEM_PORT					_T("SystemPort")
#define PROP_DESKTOPSHARE_PORT				_T("DesktopSharePort")
#define PROP_USER_ID						_T("UserID")
#define PROP_CUSTOM_URL						_T("CustomUrl")
#define PROP_VIDEO_URL						_T("VideoUrl")
#define PROP_SERVER_ADDRESS					_T("ServerAddress")

// Error codes
#define API_SUCCESS				0
#define API_ERROR				1
#define API_NO_PLUGIN			2

// Flags
#define FLG_READ_ONLY			0x00000001

// Enums
typedef enum SystemEvent{
	EVENT_UNKNOWN				= 0,
	EVENT_CONNECTING			= 1,
	EVENT_CONNECTED				= 2,
	EVENT_RECONNECTION			= 3,
	EVENT_DISCONNECTED			= 4,
	EVENT_LOGGED				= 5,
	EVENT_CONNECT_FAILED		= 6,
	EVENT_FULLOPINFO			= 7,
	EVENT_NEW_ACCOUNT_FAILED	= 8,
	EVENT_BAD_PASSWORD			= 9,	
	EVENT_SHUTDOWN				= 11,
} SystemEvent;

typedef enum MetaStatus{
	METASTATUS_LOGIN_ERROR		= 0,
	METASTATUS_CONNECT_FAILED	= 1,
	METASTATUS_NETWORK_ERROR	= 2,
	METASTATUS_CONNECTING		= 3,
	METASTATUS_CONNECTED		= 4,
	METASTATUS_ONLINE			= 5,
	METASTATUS_OFFLINE			= 6,
	METASTATUS_AWAY				= 7,
	METASTATUS_BANNED			= 8,
	METASTATUS_PENDING			= 9,
	METASTATUS_TEXT_AVAILABLE	= 10,
	METASTATUS_VOICE_AVAILABLE	= 11,
	METASTATUS_INVISIBLE		= 12
}  MetaStatus;

typedef enum ControlType{
	PREFERENCES_TITLE			= 0,
	PREFERENCES_SUBTITLE		= 1,
	PREFERENCES_SEPARATOR		= 2,
	PREFERENCES_CHECKBOX		= 3,
	PREFERENCES_RADIO			= 4,
	PREFERENCES_COMBO			= 5,
	PREFERENCES_EDIT			= 6,
	PREFERENCES_EDIT_DIGITS		= 7,
	PREFERENCES_EDIT_PASSWORD	= 8,
	PREFERENCES_TIME			= 9,
	PREFERENCES_LINK			= 10,
	PREFERENCES_NO_CONTROL		= 11
} ControlType;

typedef enum PreferencesTitleStyle{
	NO_TOP_MARGIN		= 0,
	HAS_TOP_MARGIN		= 1
} PreferencesTitleStyle;

typedef enum PanelAction{
	ACTION_NAVIGATE		= 0,
	ACTION_NAVIGATE2	= 1,
	ACTION_REFRESH		= 2,
	ACTION_STOP			= 3,
	ACTION_BACK			= 4,
	ACTION_FORWARD		= 5,
	ACTION_HOME			= 6,
	ACTION_REMOVE		= 7,
	ACTION_SHOW			= 8,
	ACTION_SET_HOME		= 9,
	ACTION_CLOSE		= 10
} PanelAction;

typedef enum CommandType {
	TYPE_ONE		= 0,
	TYPE_GROUP		= 1,
	TYPE_LICENCE	= 2,
	TYPE_BROADCAST	= 3,
	TYPE_IM_CONTACT	= 4
} CommandType;

typedef enum MessageType{
	Std		= 0,
	Info	= 1,
	Left	= 2,
} MessageType;

typedef enum PanelDirection{
	PanelDockLeft	= 0,
	PanelDockRight	= 1,
	PanelDockTop	= 2,
	PanelDockBottom	= 3,
} PanelDirection;

typedef enum PreferencesPageID{
	PAGE_GENERAL		= 0,
	PAGE_PRIVACY		= 1,
	PAGE_CONTACTCENTER	= 2,
	PAGE_ACCOUNTS		= 3,
	PAGE_SOUND			= 4,
	PAGE_IM				= 5
} PreferencesPageID;

// Structs

typedef struct PairType{
	int		cbSize;
	LPCTSTR key;
	CString value;
} PairType;

typedef struct ProtocolStatus{	
	int	cbSize;
	LPCTSTR		name;
	MetaStatus	status;
} ProtocolStatus;

typedef struct BuddyInfo{
	int	cbSize;
	LPCTSTR		protocol;
	LPCTSTR		uin;
	LPCTSTR		name;
	LPCTSTR		nick;
	LPCTSTR		group;
} BuddyInfo;

typedef struct BuddyStatus{
	int			cbSize;
	LPCTSTR		name;
	LPCTSTR		uin;
	int			status;
	MetaStatus  meta_status;
	int			icon_index;
	LPCTSTR		description;
	LPCTSTR		host;
} BuddyStatus;

typedef struct ProtocolInfo{
	int			cbSize;
	LPCTSTR		plugin_name;	
	HBITMAP		bitmap;	
	LPCTSTR		service;
	DWORD		flags;
} ProtocolInfo;

typedef struct AccountInfo{
	int		cbSize;
	LPCTSTR uin;
	LPCTSTR password;
	LPCTSTR server;
	UINT	port;
	bool	ssl;
	LPCTSTR proxy_addr;
	UINT	proxy_port;
	LPCTSTR proxy_login;
	LPCTSTR proxy_password;	
} AccountInfo;

typedef struct ChatMessage{
	int			cbSize;
	LPCTSTR		mID;
	LPCTSTR		mNick;
	LPCTSTR		mText;
	LPCTSTR		mProtocol;		
	LPCTSTR		mLicence;
	long		mTime;
	MessageType	mType;
} ChatMessage;

typedef struct ItemContext{
	int			cbSize;
	POINT		point;
	LPCTSTR		client_id;
	LONG_PTR	data;
	UINT		window_id;
} ItemContext;

typedef struct ProtocolAccountInfo{
	int			cbSize;
	LPCTSTR		protocol;
	LPCTSTR		uin;
	LPCTSTR		password;
	bool		autologin;
	LPCTSTR		proxy_addr;
	UINT		proxy_port;
	LPCTSTR		proxy_login;
	LPCTSTR		proxy_password;	
} ProtocolAccountInfo;

typedef struct ProtocolLinks{
	int			cbSize;
	CString		new_user;
	CString		remind_password;
} ProtocolLinks;

typedef struct PreferencesPair{
	int			cbSize;
	LPCTSTR		plugin_name;
	UINT		control_id;
	CString		value;
	bool		extra_choice;
} PreferencesPair;

typedef struct SoundInfo{
	int			cbSize;
	LPCTSTR		sound_name;
	bool		use_path;
	bool		sync;
	bool		loop;
} SoundInfo;

typedef struct NavigatePanelInfo{
	int			cbSize;
	LPCTSTR		plugin_name;
	UINT		panel_id;
	PanelAction action;
	LPCTSTR		url;
	DWORD		flags;
} NavigatePanelInfo;

typedef struct UrlPanelInfo{
	int			cbSize;
	LPCTSTR		plugin_name;
	UINT		panel_id;
	CString		url;
	bool		exists;
} UrlPanelInfo;

typedef struct CommandInfo{
	int			cbSize;
	CommandType	type;
	LPCTSTR		receiver_id;
	LPCTSTR		data;
	UINT		cmd_id;
	LPCTSTR		params;
} CommandInfo;

typedef struct CommandFailureInfo {
	int			cbSize;
	LPCTSTR		op_id;
	UINT		cmd_id;
	UINT		error;
} CommandFailureInfo;

///////////////////////////////////////////////////

typedef struct LCTOOLBAR{
	int		cbSize;
	LPCTSTR	plugin_name;
	UINT	id;
	LPCTSTR	name;	
} LCTOOLBAR;

typedef struct LCTOOLBARITEM{
	int				cbSize;
	LPCTSTR			plugin_name;
	UINT			toolbar_id;
	UINT			id;
	LPCTSTR			caption;	
	DWORD			flags;
	int				position;
	HICON			icon;
	LPCTSTR			tooltip;
	HMENU			menu;
	LPCTSTR			service;
} LCTOOLBARITEM;

typedef struct LCSTATUSBARITEM{
	int				cbSize;
	LPCTSTR			plugin_name;
	UINT			id;
	LPCTSTR			caption;
	HIMAGELIST		image_list;
	LPCTSTR			service;
} LCSTATUSBARITEM;

typedef struct LCPANEL{
	int				cbSize;
	LPCTSTR			plugin_name;
	UINT			id;	
	LPCTSTR			caption;	
	CDialog*		dialog;
	PanelDirection	direction;
	RECT			rect;
} LCPANEL;

typedef struct LCMENUITEM{
	int				cbSize;
	LPCTSTR			plugin_name;
	UINT			id;
	LPCTSTR			caption;	
	DWORD			flags;
	int				position;
	HICON			icon;
	LPCTSTR			service;
} LCMENUITEM;

typedef struct LCBARPANE{
	int				cbSize;
	LPCTSTR			plugin_name;
	UINT			id;
	LPCTSTR			caption;
	CDialog*		dialog;
	HIMAGELIST		image_list;
	HMENU			menu;
	LPCTSTR			service;
} LCBARPANE;

typedef struct LCINFOBAR{
	int				cbSize;
	LPCTSTR			plugin_name;
	LPCTSTR			caption;
	LPCTSTR			message;
	LPCTSTR			service;
	int				style;		//MB_OK, MB_YESNO
	int				delay;		//after x msec close
} LCINFOBAR;

typedef struct LCMSGBOX{
	int				cbSize;
	LPCTSTR			plugin_name;
	LPCTSTR			message;
	LPCTSTR			caption;
	int				style;		//MB_OK, MB_YESNO
	int*			retcode;
} LCMSGBOX;

typedef struct LCPREFERENCESITEM{
	int				cbSize;
	LPCTSTR			plugin_name;
	UINT			page_id;
	UINT			id;
	LPCTSTR			caption;
	ControlType		type;
	HICON			icon;
	DWORD			style;
	LPCTSTR			service;
} LCPREFERENCESITEM;

typedef struct LCPREFERENCESPAGE{
	int				cbSize;
	LPCTSTR			plugin_name;
	UINT			id;
	LPCTSTR			caption;
	HICON			icon;
} LCPREFERENCESPAGE;

typedef struct LCWEBPANEL{
	int				cbSize;
	LPCTSTR			plugin_name;
	UINT			id;
	LPCTSTR			name;
	LPCTSTR			content;
	bool			html;
} LCWEBPANEL;

//////////////////////////////////////////////////////////
Personal tools