From LIVECHAT Developer Zone Wiki
////////////////////////////////////////////////////////////////////////
//
// 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;
//////////////////////////////////////////////////////////