type
TfrmMain =
class
(TForm)
ICQClient: TICQClient;
mmoEvents: TMemo;
lstContactList: TListBox;
tmrWaitToAskCL: TTimer;
Button1: TButton;
Button2: TButton;
edtTimeMsg: TLabeledEdit;
edtSendMsg: TLabeledEdit;
TimerMsg: TTimer;
edtMinTimeMsg: TSpinEdit;
edtMaxTimeMsg: TSpinEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Button3: TButton;
procedure
AddEvent(EventText :
String
);
procedure
FormDestroy(Sender: TObject);
procedure
ICQClientLogin(Sender: TObject);
procedure
ICQClientLogOff(Sender: TObject);
procedure
ICQClientConnectionFailed(Sender: TObject);
procedure
ICQClientError(Sender: TObject; ErrorType: TErrorType;
ErrorMsg:
String
);
procedure
ICQClientServerListRecv(Sender: TObject;
SrvContactList: TList);
procedure
tmrWaitToAskCLTimer(Sender: TObject);
procedure
ICQClientMessageRecv(Sender: TObject; Msg, UIN:
String
);
procedure
ICQClientOfflineMsgRecv(Sender: TObject; DateTime: TDateTime;
Msg, UIN:
String
);
procedure
ICQClientAddedYou(Sender: TObject; UIN:
String
);
procedure
FormCreate(Sender: TObject);
procedure
Button1Click(Sender: TObject);
procedure
Button2Click(Sender: TObject);
private
public
end
;
var
frmMain: TfrmMain;
NeedToConnectAgain, FullReloadContactList:
Boolean
;
UIN, MinTime, MaxTime:
Integer
;
Password:
String
;
Rnd: TStrings;
implementation
{$R *.dfm}
procedure
TfrmMain
.
AddEvent(EventText :
String
);
begin
EventText := DateToStr(Date) +
' '
+ TimeToStr(Time) +
' >>> '
+ EventText;
if
mmoEvents
.
Text =
''
then
mmoEvents
.
Text := EventText
else
mmoEvents
.
Lines
.
Add(EventText);
end
;
procedure
TfrmMain
.
FormDestroy(Sender: TObject);
begin
if
ICQClient
.
LoggedIn
then
ICQClient
.
LogOff;
end
;
procedure
TfrmMain
.
ICQClientLogin(Sender: TObject);
begin
Button1
.
Enabled :=
False
;
Button2
.
Enabled :=
True
;
AddEvent(
'Успешно подключились под номером '
+ IntToStr(ICQClient
.
UIN));
NeedToConnectAgain :=
True
;
tmrWaitToAskCL
.
Enabled :=
True
;
end
;
procedure
TfrmMain
.
ICQClientLogOff(Sender: TObject);
begin
Button1
.
Enabled :=
True
;
Button2
.
Enabled :=
False
;
AddEvent(
'Успешно отключились'
);
end
;
procedure
TfrmMain
.
ICQClientConnectionFailed(Sender: TObject);
begin
if
NeedToConnectAgain
then
begin
AddEvent(
'Подключение сорвалось! Переподключаемся...'
);
Button1Click(Self);
end
;
end
;
procedure
TfrmMain
.
ICQClientError(Sender: TObject; ErrorType: TErrorType;
ErrorMsg:
String
);
begin
AddEvent(
'Ошибка! '
+ ErrorMsg);
end
;
procedure
TfrmMain
.
ICQClientServerListRecv(Sender: TObject;
SrvContactList: TList);
var
i:
LongInt
;
UserInfo: TUINEntry;
begin
if
FullReloadContactList
then
begin
FullReloadContactList :=
False
;
lstContactList
.
Clear;
end
;
if
SrvContactList
.
Count >
0
then
for
i :=
0
to
SrvContactList
.
Count -
1
do
begin
UserInfo := PUINEntry(SrvContactList
.
Items[i])^;
if
UserInfo
.
CType =
0
then
lstContactList
.
AddItem(IntToStr(UserInfo
.
UIN), Self);
end
;
AddEvent(
'Получен список контактов'
);
ICQClient
.
DestroyUINList(SrvContactList);
end
;
procedure
TfrmMain
.
tmrWaitToAskCLTimer(Sender: TObject);
begin
tmrWaitToAskCL
.
Enabled :=
False
;
FullReloadContactList :=
True
;
ICQClient
.
RequestContactList;
AddEvent(
'Запрошен список контактов'
);
ICQClient
.
RequestOfflineMessages;
AddEvent(
'Запрошены оффлайн сообщения'
);
end
;
procedure
TfrmMain
.
ICQClientMessageRecv(Sender: TObject; Msg, UIN:
String
);
begin
AddEvent(
'От ('
+ UIN +
') принято сообщение: ['
+ Msg +
']'
);
end
;
procedure
TfrmMain
.
ICQClientOfflineMsgRecv(Sender: TObject;
DateTime: TDateTime; Msg, UIN:
String
);
begin
AddEvent(
'От ('
+ UIN +
') принято сообщение в оффлайн в {'
+ DateTimeToStr(DateTime) +
'}: ['
+ Msg +
']'
);
end
;
procedure
TfrmMain
.
ICQClientAddedYou(Sender: TObject; UIN:
String
);
begin
AddEvent(
'Меня добавил UIN '
+ UIN +
'.'
);
end
;
procedure
TfrmMain
.
Button1Click(Sender: TObject);
begin
ICQClient
.
UIN := UIN;
ICQClient
.
Password := Password;
try
ICQClient
.
Login(S_ALLOWDAUTH)
except
ShowMessage(
'Невозможно установить соединение!'
);
end
;
end
;
procedure
TfrmMain
.
Button2Click(Sender: TObject);
begin
NeedToConnectAgain :=
False
;
ICQClient
.
LogOff;
end
;