unit TalkingFrm;
interface
uses
IdBaseComponent, RealICQDBHistory, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP, VideoTransmitter, MD5_32, AudioTransmitter, WinInet,
PtoPFileTransmitter, PerlRegEx, TransmitDirection, FileTransmitterObjective,
MD5, RealICQUtils, cvcode, ClipBrd, ShareUtils, DSUtil, DirectShow9,
RealICQModel, MainFrm, GIFImage, pngimage, xFonts, MSHTML, DateUtils, Types,
MyUtils, ShellAPI, RealICQSkinFrm, RealICQUIColor, RealICQColors,
RealICQClient, RealICQContacterListView, Windows, Messages, SysUtils, Variants,
Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, ToolWin, ActnMan,
ActnCtrls, ActnMenus, StdActns, ActnList, XPStyleActnCtrls, RealICQSpeedButton,
ComCtrls, ImgList, StdCtrls, Buttons, RealICQButton, OleCtrls, SHDocVw,
StdStyleActnCtrls, Menus, ActnPopup, RealICQRoundBorderPanel,
RealICQNoBorderPageControl, jpeg, RealICQUserCard, RxRichEd, RealICQRichEdit,
ExtDlgs, StrUtils, ActiveX, XMLDoc, XMLIntf, AppEvnts, RealICQTrackBar,
RealICQMicrophoneVolumeControl, RealICQMasterVolumeControl,
RealICQSingleImageButton, DSPack, ConfirmSendOfflineFileFrm,
RealICQRemoteControlImage, ExtWebBrowser, lxkj_TLB, HTTPApp, UpLoadFileToWeb,
WebBrowserWithUI, MyInputBoxFrm, BlockingTCPClient, FileTransferWithNode,
TransmiteFileMission, UploadOrDownloadFileMission, VCardFrm;
const
TalkingTextColor: string = '#585858'; {对话窗口中系统信息字体颜色}
MaxMessageLength: Integer = 3500; {消息的最大字符数}
type
PImageInfo = ^TImageInfo;
TImageInfo = record
Name: string;
iFlag: Integer;
end;
TTalkingCategory = (tcNormal, tcTeam);
TTalkingForm = class(TRealICQSkinForm)
pnlClient: TPanel;
ActionManager1: TActionManager;
actSaveAsTextFile: TAction;
EditCut: TEditCut;
EditCopy: TEditCopy;
EditPaste: TEditPaste;
EditSelectAll: TEditSelectAll;
EditUndo: TEditUndo;
EditDelete: TEditDelete;
actAlwayOnTop: TAction;
pnlToolBar: TPanel;
Shape1: TShape;
ImgLstForActions: TImageList;
pnlForActionToolBar: TPanel;
actAddUser: TAction;
actSendFile: TAction;
actVideo: TAction;
actAudio: TAction;
ImgLstForShowHideUserPanel: TImageList;
TimerForGetUserInformation: TTimer;
ppMyOptions: TPopupActionBar;
N2: TMenuItem;
V1: TMenuItem;
miShowMyHeadImage: TMenuItem;
miShowMyCard: TMenuItem;
ppYourOptions: TPopupActionBar;
miShowYourHeadImage: TMenuItem;
miShowYourCard: TMenuItem;
miShowYourVideo: TMenuItem;
miShowMyVideo: TMenuItem;
N11: TMenuItem;
miSeeYourDetailInformation: TMenuItem;
FontDialog: TFontDialog;
ppForWebBrowser: TPopupActionBar;
miCopyFromIE: TMenuItem;
miSelAllFromIE: TMenuItem;
ppForInputer: TPopupActionBar;
U1: TMenuItem;
N14: TMenuItem;
C1: TMenuItem;
C2: TMenuItem;
P1: TMenuItem;
T1: TMenuItem;
A1: TMenuItem;
EditFontSet: TAction;
OpenDialog: TOpenDialog;
miSaveImageAs: TMenuItem;
miAddImageToCustomFaces: TMenuItem;
ApplicationEvents: TApplicationEvents;
miSplitAtWebBrowser: TMenuItem;
actPrint: TAction;
actPageSet: TAction;
actPreview: TAction;
actClose: TAction;
actSaveAsHTMLFile: TAction;
actShowHistory: TAction;
actEnter: TAction;
actCtrlEnter: TAction;
ClearInputtingMessageTimer: TTimer;
ImgLstForAudio: TImageList;
ppAudioSet: TPopupActionBar;
miOpenSpeak: TMenuItem;
miCloseSpeak: TMenuItem;
miOpenMic: TMenuItem;
MenuItem14: TMenuItem;
miStopAudioTransmite: TMenuItem;
miCloseMic: TMenuItem;
miStopVideo: TMenuItem;
actStopVideo: TAction;
S1: TMenuItem;
miMyVideoSize: TMenuItem;
miMyVideoMiddleSize: TMenuItem;
miMyVideoSmallSize: TMenuItem;
miYourVideoSize: TMenuItem;
miYourVideoSmallSize: TMenuItem;
miYourVideoBigSize: TMenuItem;
miMyVideoBigSize: TMenuItem;
miYourVideoMiddleSize: TMenuItem;
ReEnabledVideoActionTimer: TTimer;
miSaveYourVideoImageAs: TMenuItem;
miSaveMyVideoImageAs: TMenuItem;
OpenPictureDialog: TOpenPictureDialog;
miSeeTeamDetailInformation: TMenuItem;
ppUserItemRightMenu: TPopupActionBar;
miSendMessage: TMenuItem;
miSeeUserInformation: TMenuItem;
actSeeTeamOptions: TAction;
actQuitTeam: TAction;
actDisbandTeam: TAction;
pnlAdvertisement: TPanel;
pnlForWebBrowserAdvertisement: TPanel;
WebBrowserForAdvertisement: TWebBrowser;
pnlForHideWebBrowserAdvertisement: TPanel;
ppColors: TPopupActionBar;
MenuItem18: TMenuItem;
miMoreColors: TMenuItem;
miShowVideoForm: TMenuItem;
imgToolbarBack: TImage;
spbAddUser: TRealICQSpeedButton;
spbSendFile: TRealICQSpeedButton;
spbAudio: TRealICQSpeedButton;
spbVideo: TRealICQSpeedButton;
spbSeeTeamOptions: TRealICQSpeedButton;
spbQuitTeam: TRealICQSpeedButton;
spbDisbandTeam: TRealICQSpeedButton;
miVideoSet: TMenuItem;
spbUploadFile: TRealICQSpeedButton;
spbRemoteControl: TRealICQSpeedButton;
pnlRC: TPanel;
pnlTalkingArea: TPanel;
Splitter1: TSplitter;
pnlDisplayer: TPanel;
ShpDisplayerTopMiddle: TShape;
ShpDisplayerClient: TShape;
ImgDisplayerTopLeft: TImage;
ImgDisplayerTopRight: TImage;
lblDest: TLabel;
pnlForWebBrowser: TPanel;
pnlHint: TPanel;
Image1: TImage;
LblHint: TLabel;
pnlUserInformation: TPanel;
pnlMyInfo: TPanel;
rndMyInfo: TRealICQRoundBorderPanel;
SpbForMyInfo: TRealICQSpeedButton;
spbMic: TRealICQSpeedButton;
MicrophoneVolume: TRealICQMicrophoneVolumeControl;
pnlTeamCallBoard: TPanel;
rndTeamCallBoard: TRealICQRoundBorderPanel;
Image2: TImage;
lblTeamCallBoardTitle: TLabel;
mmTeamCallBoard: TMemo;
pnlRemoteControl: TPanel;
rndRemoteControl: TRealICQRoundBorderPanel;
btSetControl: TRealICQSpeedButton;
btClose: TRealICQSpeedButton;
btReleaseControl: TRealICQSpeedButton;
lblRCState: TLabel;
SplitterRC: TSplitter;
ppForTeamMenu: TPopupActionBar;
miTeamSendMessage: TMenuItem;
miTeamSMS: TMenuItem;
miTeamSeeUserInfo: TMenuItem;
miTeamAddFriend: TMenuItem;
miAddFriend: TMenuItem;
miSendSms: TMenuItem;
ppForInputerImg: TPopupActionBar;
MenuItem3: TMenuItem;
miCopyImage: TMenuItem;
miPasteImg: TMenuItem;
MenuItem6: TMenuItem;
MenuItem7: TMenuItem;
S2: TMenuItem;
actSaveImgAs: TAction;
actAddImageToCustomFaces: TAction;
F2: TMenuItem;
spbSendFolder: TRealICQSpeedButton;
miSaveToWeb: TMenuItem;
LblSendSMS: TLabel;
LblSendSMS1: TLabel;
PnlShowHideUserInfo: TPanel;
ImgHideShowUserInformation: TImage;
spbTeamNetWorkDisk: TRealICQSpeedButton;
PnlTeamWebDisk: TPanel;
pnlTeamMembers: TPanel;
rndTeamMembers: TRealICQRoundBorderPanel;
SpbForTeamMemberInfo: TRealICQSpeedButton;
rndTeamMemberContainer: TRealICQRoundBorderPanel;
pnlTeamMemberContainer: TPanel;
FLVTeamMembers: TRealICQContacterListView;
rndTeamWebDisk: TRealICQRoundBorderPanel;
Panel2: TPanel;
imgTeamWebDiskToolbarBack: TImage;
lblTeamWebDiskHint: TLabel;
spbCloseTeamWebDisk: TRealICQSpeedButton;
Panel4: TPanel;
WebBrowserForTeamDiskold: TWebBrowser;
pnlForHideTeamDisk: TPanel;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N17: TMenuItem;
TimerForCheckPastedContent: TTimer;
actCopyScreenHideForm: TAction;
spbSendSMS: TRealICQSpeedButton;
SaveDialog: TSaveDialog;
miAddWorkOrder: TMenuItem;
spbUploadTeamFile: TRealICQSpeedButton;
spbUploadTeamFileProcess: TRealICQSpeedButton;
WebBrowserForTeamDisk: TWebBrowserWithUI;
UpdateAlias: TMenuItem;
CaptureGraph: TFilterGraph;
VideoSourceFilter: TFilter;
spbPostSMS: TRealICQSpeedButton;
pnlInputer: TPanel;
ImgInputerTopLeft: TImage;
ImgInputerTopRight: TImage;
ImgInputerTopMiddle: TImage;
ShpInputerClient: TShape;
spbFont: TRealICQSpeedButton;
spbFace: TRealICQSpeedButton;
lblState: TLabel;
spbSendImage: TRealICQSpeedButton;
spbCopyScreen: TRealICQSpeedButton;
spbSelUIColor: TRealICQSpeedButton;
spbShakeWindow: TRealICQSpeedButton;
spbBackground: TRealICQSpeedButton;
spbHistroyMessage: TRealICQSpeedButton;
pnlInputeBack: TPanel;
Panel1: TPanel;
RichEditTemp: TRealICQRichEdit;
RichEdInputer: TRealICQRichEdit;
Panel5: TPanel;
Image3: TImage;
btSend: TRealICQButton;
btCloseTalk: TRealICQButton;
spbUserInfo: TRealICQSpeedButton;
lblTeamMemberCount: TLabel;
actClearWeb: TAction;
E1: TMenuItem;
N12: TMenuItem;
E2: TMenuItem;
actClearEdit: TAction;
btDownArrow: TRealICQButton;
ppForSnap: TPopupActionBar;
ppForDown: TPopupActionBar;
H1: TMenuItem;
N16: TMenuItem;
Enter: TMenuItem;
CtrlEnter: TMenuItem;
ppForMsg: TPopupActionBar;
H2: TMenuItem;
MClearWindow: TMenuItem;
spbNormalMsg: TRealICQSpeedButton;
spbEncryMsg: TRealICQSpeedButton;
Image4: TImage;
pnlYourInfo: TPanel;
rndYourInfo: TRealICQRoundBorderPanel;
SpbForYourInfo: TRealICQSpeedButton;
spbSpk: TRealICQSpeedButton;
MasterVolume: TRealICQMasterVolumeControl;
rndMy: TRealICQRoundBorderPanel;
pgcMyInfo: TRealICQNoBorderPageControl;
tsMyHeadImage: TTabSheet;
ImgHeadForMyInfo: TImage;
tsMyCard: TTabSheet;
cardMine: TRealICQUserCard;
tsMyVideo: TTabSheet;
ImgMyVideo: TImage;
lblMyInfo: TLabel;
N18: TMenuItem;
ShpHeadBackForMyInfo: TShape;
lblYourInfo: TLabel;
rndYour: TRealICQRoundBorderPanel;
pgcYourInfo: TRealICQNoBorderPageControl;
tsYourHeadImage: TTabSheet;
ShpHeadBackForYourInfo: TShape;
ImgHeadForYourInfo: TImage;
tsYourCard: TTabSheet;
cardYour: TRealICQUserCard;
tsYourVideo: TTabSheet;
ImgYourVideo: TImage;
N1: TMenuItem;
HTML1: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
V2: TMenuItem;
U2: TMenuItem;
pnlForHideWebBrowser: TPanel;
WebBrowser: TWebBrowser;
spbSet: TRealICQSpeedButton;
ppForSet: TPopupActionBar;
O1: TMenuItem;
N13: TMenuItem;
I1: TMenuItem;
W1: TMenuItem;
spbAbout: TRealICQSpeedButton;
O2: TMenuItem;
btnQR: TRealICQSpeedButton;
//ImgMyVideoBorder: TImage;
procedure spbHistroyMessageClick(Sender: TObject);
procedure UpdateAliasClick(Sender: TObject);
procedure spbUploadTeamFileClick(Sender: TObject);
procedure miAddWorkOrderClick(Sender: TObject);
procedure spbSendSMSClick(Sender: TObject);
procedure sbpSMSClick(Sender: TObject);
procedure actCopyScreenHideFormExecute(Sender: TObject);
procedure ppForWebBrowserPopup(Sender: TObject);
procedure ppForInputerImgPopup(Sender: TObject);
procedure TimerForCheckPastedContentTimer(Sender: TObject);
procedure RichEdInputerInsertObject(Sender: TObject);
procedure RichEdInputerDropFiles(Sender: TObject; AFiles: TStringList);
procedure WebBrowserForTeamDiskoldBeforeNavigate2(ASender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool);
procedure WebBrowserForTeamDiskoldDocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
procedure RichEdInputerSelectionChange(Sender: TObject);
procedure EditPasteUpdate(Sender: TObject);
procedure EditPasteExecute(Sender: TObject);
procedure spbCloseTeamWebDiskClick(Sender: TObject);
procedure spbTeamNetWorkDiskClick(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure ImgHideShowUserInformationClick(Sender: TObject);
procedure ImgHideShowUserInformationMouseLeave(Sender: TObject);
procedure ImgHideShowUserInformationMouseEnter(Sender: TObject);
procedure LblSendSMSClick(Sender: TObject);
procedure LblSendSMSMouseLeave(Sender: TObject);
procedure LblSendSMSMouseEnter(Sender: TObject);
procedure miSaveToWebClick(Sender: TObject);
procedure spbSendFolderClick(Sender: TObject);
procedure miPasteImgClick(Sender: TObject);
procedure actAddImageToCustomFacesExecute(Sender: TObject);
procedure actSaveImgAsExecute(Sender: TObject);
procedure ppForInputerImgGetControlClass(Sender: TCustomActionBar; AnItem: TActionClient; var ControlClass: TCustomActionControlClass);
procedure miCopyImageClick(Sender: TObject);
procedure miTeamAddFriendClick(Sender: TObject);
procedure miAddFriendClick(Sender: TObject);
procedure miTeamSeeUserInfoClick(Sender: TObject);
procedure ppForTeamMenuPopup(Sender: TObject);
procedure miSendSmsClick(Sender: TObject);
procedure miTeamSMSClick(Sender: TObject);
procedure miTeamSendMessageClick(Sender: TObject);
procedure ppForTeamMenuGetControlClass(Sender: TCustomActionBar; AnItem: TActionClient; var ControlClass: TCustomActionControlClass);
procedure btCloseClick(Sender: TObject);
procedure btReleaseControlClick(Sender: TObject);
procedure btSetControlClick(Sender: TObject);
procedure spbRemoteControlClick(Sender: TObject);
procedure spbUploadFileClick(Sender: TObject);
procedure miMoreColorsClick(Sender: TObject);
procedure ppColorsPopup(Sender: TObject);
procedure ppColorsGetControlClass(Sender: TCustomActionBar; AnItem: TActionClient; var ControlClass: TCustomActionControlClass);
procedure actShowHistoryExecute(Sender: TObject);
procedure WebBrowserForAdvertisementBeforeNavigate2(ASender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool);
procedure WebBrowserForAdvertisementDocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
procedure actAddUserExecute(Sender: TObject);
procedure actDisbandTeamExecute(Sender: TObject);
procedure actQuitTeamExecute(Sender: TObject);
procedure actSeeTeamOptionsExecute(Sender: TObject);
procedure miSeeUserInformationClick(Sender: TObject);
procedure miSendMessageClick(Sender: TObject);
procedure ppUserItemRightMenuPopup(Sender: TObject);
procedure ppUserItemRightMenuGetControlClass(Sender: TCustomActionBar; AnItem: TActionClient; var ControlClass: TCustomActionControlClass);
procedure miSeeTeamDetailInformationClick(Sender: TObject);
procedure spbCopyScreenClick(Sender: TObject);
procedure miSaveYourVideoImageAsClick(Sender: TObject);
procedure miSaveMyVideoImageAsClick(Sender: TObject);
procedure ReEnabledVideoActionTimerTimer(Sender: TObject);
procedure miMyVideoSmallSizeClick(Sender: TObject);
procedure miYourVideoSmallSizeClick(Sender: TObject);
procedure actStopVideoExecute(Sender: TObject);
procedure actVideoExecute(Sender: TObject);
procedure miStopAudioTransmiteClick(Sender: TObject);
procedure miOpenMicClick(Sender: TObject);
procedure miCloseMicClick(Sender: TObject);
procedure miOpenSpeakClick(Sender: TObject);
procedure miCloseSpeakClick(Sender: TObject);
procedure spbMicClick(Sender: TObject);
procedure spbSpkClick(Sender: TObject);
procedure ppAudioSetGetControlClass(Sender: TCustomActionBar; AnItem: TActionClient; var ControlClass: TCustomActionControlClass);
procedure actAudioExecute(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ClearInputtingMessageTimerTimer(Sender: TObject);
procedure actCtrlEnterExecute(Sender: TObject);
procedure actEnterExecute(Sender: TObject);
procedure actAlwayOnTopExecute(Sender: TObject);
procedure actEmptyWebExecute(Sender: TObject);
procedure spbSendImageClick(Sender: TObject);
procedure actSaveAsHTMLFileExecute(Sender: TObject);
procedure actPreviewExecute(Sender: TObject);
procedure actPrintExecute(Sender: TObject);
procedure actPageSetExecute(Sender: TObject);
procedure actSaveAsTextFileExecute(Sender: TObject);
procedure actCloseExecute(Sender: TObject);
procedure ApplicationEventsMessage(var Msg: tagMSG; var Handled: Boolean);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure actSendFileExecute(Sender: TObject);
procedure EditFontSetExecute(Sender: TObject);
procedure RichEdInputerMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure ppForInputerGetControlClass(Sender: TCustomActionBar; AnItem: TActionClient; var ControlClass: TCustomActionControlClass);
procedure miSelAllFromIEClick(Sender: TObject);
procedure miCopyFromIEClick(Sender: TObject);
procedure ppForWebBrowserGetControlClass(Sender: TCustomActionBar; AnItem: TActionClient; var ControlClass: TCustomActionControlClass);
procedure WebBrowserBeforeNavigate2(ASender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool);
procedure WebBrowserDocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
procedure spbFaceClick(Sender: TObject);
procedure spbFontClick(Sender: TObject);
procedure RichEdInputerChange(Sender: TObject);
procedure btSendClick(Sender: TObject);
procedure lblDestMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure lblDestMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure lblDestClick(Sender: TObject);
procedure lblDestMouseLeave(Sender: TObject);
procedure lblDestMouseEnter(Sender: TObject);
procedure miSeeYourDetailInformationClick(Sender: TObject);
procedure rndMyInfoResize(Sender: TObject);
procedure tsMyVideoShow(Sender: TObject);
procedure miShowMyVideoClick(Sender: TObject);
procedure tsYourVideoShow(Sender: TObject);
procedure miShowYourVideoClick(Sender: TObject);
procedure tsMyCardShow(Sender: TObject);
procedure tsMyHeadImageShow(Sender: TObject);
procedure miShowMyCardClick(Sender: TObject);
procedure miShowMyHeadImageClick(Sender: TObject);
procedure tsYourCardShow(Sender: TObject);
procedure tsYourHeadImageShow(Sender: TObject);
procedure miShowYourCardClick(Sender: TObject);
procedure miShowYourHeadImageClick(Sender: TObject);
procedure SpbForYourInfoClick(Sender: TObject);
procedure ppYourOptionsGetControlClass(Sender: TCustomActionBar; AnItem: TActionClient; var ControlClass: TCustomActionControlClass);
procedure ppMyOptionsGetControlClass(Sender: TCustomActionBar; AnItem: TActionClient; var ControlClass: TCustomActionControlClass);
procedure SpbForMyInfoClick(Sender: TObject);
procedure pnlDisplayerResize(Sender: TObject);
procedure TimerForGetUserInformationTimer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
//procedure spbShowHideUserInformationClick(Sender: TObject);
procedure spbSelUIColorClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure spbShakeWindowClick(Sender: TObject);
procedure spbBackgroundClick(Sender: TObject);
procedure miShowVideoFormClick(Sender: TObject);
procedure ApplicationEventsException(Sender: TObject; E: Exception);
procedure miVideoSetClick(Sender: TObject);
//procedure pnlTeamCallBoardClick(Sender: TObject);
procedure WebBrowserForTeamDiskBeforeNavigate2(ASender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool);
//procedure spbCopyScreen2Click(Sender: TObject);
procedure spbUserInfoClick(Sender: TObject);
//procedure chkEncryMessageClick(Sender: TObject);
procedure actClearWebExecute(Sender: TObject);
procedure actClearEditExecute(Sender: TObject);
procedure btDownArrowClick(Sender: TObject);
procedure ppForSnapGetControlClass(Sender: TCustomActionBar; AnItem: TActionClient; var ControlClass: TCustomActionControlClass);
procedure ppForDownGetControlClass(Sender: TCustomActionBar; AnItem: TActionClient; var ControlClass: TCustomActionControlClass);
procedure ppForMsgGetControlClass(Sender: TCustomActionBar; AnItem: TActionClient; var ControlClass: TCustomActionControlClass);
procedure ppForSetGetControlClass(Sender: TCustomActionBar; AnItem: TActionClient; var ControlClass: TCustomActionControlClass);
procedure MClearWindowClick(Sender: TObject);
procedure spbEncryMsgClick(Sender: TObject);
procedure spbNormalMsgClick(Sender: TObject);
procedure Splitter1CanResize(Sender: TObject; var NewSize: Integer; var Accept: Boolean);
procedure spbSetClick(Sender: TObject);
procedure spbAboutClick(Sender: TObject);
procedure btnQRClick(Sender: TObject);
procedure pnlTalkingAreaClick(Sender: TObject);
procedure cardYourResize(Sender: TObject);
procedure btCloseTalkClick(Sender: TObject);
//procedure tsMyVideoContextPopup(Sender: TObject; MousePos: TPoint;
// var Handled: Boolean);
private
FVCardFrom: TVCardForm;
FTcpClient: TBlockingTCPClient;
FCategory: TTalkingCategory;
FRightMouseClickedFace: TFaceInRichEdit;
FTeamID: string;
FTeamUpLoadFile: TUpLoadFile;
//显示群组成员列表的ListView
FFileTransmitters: TStringList;
FOldWidth, FOldHeight, FOldWidthOfUserInfo, FMinWidthOfYourPanel, FMinWidthOfMyPanel: Integer;
FSender, FReceiver: string;
FFaceMenuAtFileName: string; //在自定义表情上弹出右键菜单时所指的图片文件的名称
FSetFaceMenuAtFileNameTicket: Cardinal;
FLastSendInputtingMessageTicket: Cardinal;
FAudioMission: TAudioMission;
FVideoMission: TVideoMission;
FRemoteControlMission: TRemoteControlMission;
FWindowColor: TColor;
FUseSelfColor: Boolean;
FBackGroundImage: string;
FOfflinefilesAddr: string;
FOfflinefilesPort: Integer;
FPackageSize: Integer;
FTransmiteFileMissions: TList;
FUpDownFileMissions: TList;
FNodeTransferMissions: TList;
FSettedYourVideImageSize, FSettedMyVideImageSize: Boolean;
FLastSendShakeWindowTicket: Cardinal;
FLastRecvShakeWindowTicket: Cardinal;
FLastSendMsgTicket: Cardinal;
FRidrected: Boolean;
FRidrectURL: string;
FImageSize: Integer;
FBaseURL: string;
FMaxID: Integer;
procedure LoadOfflinefilesConfig;
procedure LoadWindowColor;
procedure SaveWindowColor;
procedure miColorClick(Sender: TObject);
procedure LoadBackGround;
procedure SaveBackGround;
procedure IdHTTPOnRedirect(Sender: TObject; var dest: string; var NumRedirect: Integer; var Handled: boolean; var VMethod: TIdHTTPMethod);
procedure IdHTTPWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Integer);
procedure IdHTTPWorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Integer);
procedure IdHTTPWorkEnd(ASender: TObject; AWorkMode: TWorkMode);
function GetHTMLUBBCode(AHTML: string; var ABaseURL: string): string;
function ReAlighHTMLContent(ABaseURL: string): Boolean;
function CheckImageExists(AImageFile: string): string;
function FindIECacheImage(ADir, AImageFile: string): string;
procedure CheckPastedContent(ADeleteOtherObj: Boolean = False);
procedure AddImageToInput(AFileName: string; ARichEd: TRealICQRichEdit);
procedure ChangePopupActionBarColor(PopupActionBar: TPopupActionBar);
function CheckNotCompletedMission: Integer;
procedure LoadNotReadMessages;
procedure UpdateMyInfo;
procedure UpdateTeamMembers;
procedure SetTeamID(Value: string);
procedure SetReceiver(Value: string);
procedure ShowSpbShowHideUserInformationState;
function GetInputerLength: Integer;
procedure InvokeCMD(InvokeIE: Boolean; Value1, Value2: Integer; var vaIn, vaOut: OleVariant);
procedure SetDOMStyle(Doc: IHTMLDocument2);
procedure LoadAdvertisement;
procedure P2PTypeChanged(Sender: TObject);
function GetCanWriteMessage: Boolean;
procedure CancelAllSendFile;
procedure CloseAllMissions;
procedure CancelAllUpDdownFile;
procedure CancelAllUpDdownNodeFile;
procedure CalculatedWaveInVolume(Sender: TObject; ALoginName: string; AVolume: Integer);
procedure CalculatedWaveOutVolume(Sender: TObject; ALoginName: string; AVolume: Integer);
procedure CapturedVideoImage(Sender: TObject; ALoginName: string; ABitmap: TBitmap);
procedure ReceivedVideoImage(Sender: TObject; ALoginName: string; ABitmap: TBitmap);
procedure CreateTeamResult(Sender: TObject; ATeamCaption: string; ACreated: Boolean; ATeamID: string; AFailingCause: string);
procedure AddMessageToWebBrowser(SenderID: string; SenderName, FontStr, MessageStr: string; SendDateTime: TDateTime; IsEncry: Boolean; ShowSendFailed: Boolean = False; IsHistory: Boolean = False);
procedure ShakeWindow;
procedure SetLblSendSMSPosition(HIntMsg: string);
procedure AddMessageToWebBrowserTop(SenderID: string; SenderName, FontStr, MessageStr: string; SendDateTime: TDateTime; IsEncry: Boolean; ShowSendFailed: Boolean = False; IsHistory: Boolean = False);
protected
procedure CMWininichange(var Message: TWMWinIniChange); message CM_WININICHANGE;
procedure CreateParams(var Params: TCreateParams); override;
procedure DropFiles(var Message: TMessage); message WM_DropFiles;
procedure OnKeyDown(var Msg: TMessage); message WM_KEYDOWN;
procedure OnKeyUp(var Msg: TMessage); message WM_KEYUP;
public
FRealICQClient: TRealICQClient;
procedure LoadHistoryMessages;
procedure UpdateTeamMember(ARealICQUser: TRealICQUser);
function PasteImage(AUseTemp: Boolean = True): Boolean;
procedure LoadNotReadMessagesFromDBHistory(DBHistorySearchResult: TDBHistorySearchResult);
procedure OpenSendFolderForm(FolderName: string);
procedure SendFile(FileName: string);
procedure ChangeUIColor(AColor: TColor); override;
procedure InsertFaceToRichEdit(Face: TFace; FaceID: Integer);
procedure ShowMessage(RealICQMessage: TRealICQMessage; ShowSendFailed: Boolean = False);
procedure ShowTeamMessage(RealICQTeamMessage: TRealICQTeamMessage; ShowSendFailed: Boolean = False);
procedure SendDropFile(AFileName: string);
procedure ShowGettedSendFileRequest(ASendFileRequestInfo: TSendFileRequestInfo);
procedure ShowCancelSendFile(AOppositeID: Cardinal);
procedure ShowSendOfflineFileRequest(AOppositeID: Cardinal);
procedure ShowSendedSendFileRequest(APtoPFileTransmitter: TPtoPFileTransmitter);
procedure ShowGettedAudioTransmiteRequest;
procedure ShowSendedAudioTransmiteRequest;
procedure ShowCanceledAudioTransmite;
procedure ShowGettedAudioTransmiteResponse(AAcceptted: Boolean);
procedure ShowStoppedAudioTransmite(AIsStopper: Boolean);
procedure ShowGettedAudioTransmiteConnectted;
procedure ShowGettedRemoteControlTransmiteRequest;
procedure ShowSendedRemoteControlTransmiteRequest;
procedure ShowCanceledRemoteControlTransmite;
procedure ShowGettedRemoteControlTransmiteResponse(AAcceptted: Boolean);
procedure ShowStoppedRemoteControlTransmite(AIsStopper: Boolean);
procedure ShowGettedRemoteControlTransmiteConnectted;
procedure ShowGettedRemoteControlTransmiteRecvedScreenSize(AWidth, AHeight: Integer);
procedure ShowGettedRemoteControlTransmiteControlRequest;
procedure ShowSendedRemoteControlTransmiteControlRequest;
procedure ShowCancelControlRemoteControlTransmite;
procedure ShowGettedRemoteControlTransmiteControlControlResponse(AAcceptted: Boolean);
procedure ShowGettedRemoteControlTransmiteControlBeControlResponse(AAcceptted: Boolean);
procedure FullScreenRemoteControlPanel;
procedure CloseRemoteControlPanel;
procedure OpenRemoteControlPanel;
procedure ShowGettedVideoTransmiteRequest;
procedure ShowSendedVideoTransmiteRequest;
procedure ShowCanceledVideoTransmite;
procedure ShowGettedVideoTransmiteResponse(AAcceptted: Boolean);
procedure ShowStoppedVideoTransmite(AIsStopper: Boolean);
procedure ShowGettedVideoTransmiteConnectted(ASendBigBmp, ARecvBigBmp: Boolean);
procedure ShowInputting(AInputting: Boolean);
procedure ShowShakeWindow(AIsSource: Boolean);
//TODO: 发送离线文件
procedure SendOfflineFile(AFileName: string);
//保存用户剪切屏幕的图片
procedure SaveImageInfo(TempFaceFileName: string; iFlag: Integer);
procedure SetBrowserBg(BackImage: string);
function FindTransmitFileByBaseID(ABaseID: string): TTransmiteFileMission;
function FindFileTransmitByBaseID(ABaseID: string): TUploadOrDownloadFileMission;
function FindUpDownFileByBaseID(ABaseID: string): TUploadOrDownloadFileMission;
function FindUpNodeFileByBaseID(ABaseID: string): TFileTransferWithNode;
property TransmiteFileMissions: TList read FTransmiteFileMissions;
property UpDownFileMissions: TList read FUpDownFileMissions;
property FileTransmitters: TStringList read FFileTransmitters;
property NodeTransferMissions: TList read FNodeTransferMissions;
property SettedYourVideImageSize: Boolean read FSettedYourVideImageSize write FSettedYourVideImageSize;
property SettedMyVideImageSize: Boolean read FSettedMyVideImageSize write FSettedMyVideImageSize;
property AudioMission: TAudioMission read FAudioMission write FAudioMission;
property VideoMission: TVideoMission read FVideoMission write FVideoMission;
property RemoteControlMission: TRemoteControlMission read FRemoteControlMission write FRemoteControlMission;
property FaceMenuAtFileName: string read FFaceMenuAtFileName write FFaceMenuAtFileName;
property SetFaceMenuAtFileNameTicket: Cardinal read FSetFaceMenuAtFileNameTicket write FSetFaceMenuAtFileNameTicket;
property Category: TTalkingCategory read FCategory;
property TeamID: string read FTeamID write SetTeamID;
property Receiver: string read FReceiver write SetReceiver;
property CanWriteMessage: Boolean read GetCanWriteMessage;
property WindowColor: TColor read FWindowColor;
property LastRecvShakeWindowTicket: Cardinal read FLastRecvShakeWindowTicket write FLastRecvShakeWindowTicket;
property OfflinefilesAddr: string read FOfflinefilesAddr write FOfflinefilesAddr;
property OfflinefilesPort: Integer read FOfflinefilesPort write FOfflinefilesPort;
property PackageSize: Integer read FPackageSize write FPackageSize;
property TeamUpLoadFile: TUpLoadFile read FTeamUpLoadFile;
public
ImagesList: TList;
ALoginName: string;
function HasMobilePhone(LoginName: string): Boolean;
procedure DownFileComplete(ASource, ADest, ARemark: string; AStatus: boolean; AFileSize: Integer; IsNeedNotify: Boolean);
procedure TeamUpFileProgress(ulProgress, ulProgressMax, ulStatusCode: integer; szStatusText: string);
property LVTeamMembers: TRealICQContacterListView read FLVTeamMembers;
end;
function GetTalkingFormCount: Integer;
procedure CloseAllTalkingForm;
procedure SetAllTakingFormEnabledState(AEnableValue: Boolean);
procedure UpdateAllTakingFormGIFHeadImage;
procedure UpdateAllTakingFormHotKeySet;
procedure ChangeTalkingFormVisible(AVisible: Boolean);
function OpenTalkingForm(AReceiver: string; AShowActive: Boolean = True; ARealICQClient: TRealICQClient = nil): TTalkingForm;
function GetTalkingForm(AReceiver: string; ARealICQClient: TRealICQClient = nil): TTalkingForm;
procedure UpdateTalkingForm(ARealICQUser: TRealICQUser);
function OpenTeamTalkingForm(ATeamID: string; AShowActive: Boolean = True; ARealICQClient: TRealICQClient = nil): TTalkingForm;
function GetTeamTalkingForm(ATeamID: string; ARealICQClient: TRealICQClient = nil): TTalkingForm;
procedure UpdateTeamTalkingForm(ATeam: TRealICQTeam);
function InTalkingFormAdvertisement(AHandle: THandle): Boolean;
function InTalkingFormTeamDisk(AHandle: THandle): Boolean;
procedure ChangeTalkingFormColor(AColor: TColor);
procedure ChangeTalkingFormSkin(ASkinName: string);
procedure UpdateTalkingFormAdversement;
procedure ShowCopyScreenForm(ATalkingForm: TTalkingForm);
function FindURLCache(pstrDatfile: PAnsiChar; pstrURL: PAnsiChar): PAnsiChar; stdcall external 'binary/DATReader.dll';
implementation
uses
UserCardDetailView, SMSFrm, AddFriendFrm, SelFaceFrm, AddFaceFrm,
CopyScreenFrm, TrueHiddenMainFrm, TeamOptionsFrm, AddUserFrm,
MessagesManagerFrm, SelBackFrm, UserCardFrm, VideoFrm, RemoteControlFrm,
SendFolderFrm, NotReadMessageBoxFrm, TeamsAdapter, LoggerImport,
TeamShareAdapter, LimitCondition, AsynActions, FileTransmitAdapter,
TalkFormController, UsersService, GroupConfig, ConditionConfig, UploaderTask,
MessagesHander, RealICQUtility;
{$R *.dfm}
{$R TalkImg.RES}
{TTalkingForm}
procedure TTalkingForm.LoadBackGround;
var
XMLFile: string;
XMLDocument: TXMLDocument;
BackGroundImagesNode: IXMLNode;
NodeName: string;
begin
XMLFile := TRealICQClient.GetUserDir + BackGroundImagesXMLFile;
XMLDocument := TXMLDocument.Create(Self);
try
XMLDocument.Active := True;
if not FileExists(XMLFile) then
begin
CopyFile(PChar(ExtractFilePath(paramstr(0)) + ConfigXMLFilePath + BackGroundImagesXMLFile), PChar(XMLFile), False);
XMLDocument.Active := True;
end;
XMLDocument.LoadFromFile(XMLFile);
BackGroundImagesNode := XMLDocument.DocumentElement;
if FCategory = tcNormal then
NodeName := 'U' + FReceiver
else
NodeName := 'T' + FTeamID;
try
if BackGroundImagesNode.ChildNodes.FindNode(NodeName) <> nil then
begin
FBackGroundImage := BackGroundImagesNode.ChildNodes.FindNode(NodeName).Attributes['BackGroundImage'];
if not FileExists(FBackGroundImage) then
FBackGroundImage := '';
try
SetDomStyle(WebBrowser.Document as IHtmlDocument2);
except
end;
end;
except
end;
finally
XMLDocument.Free;
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.SaveBackGround;
var
XMLFile: string;
XMLDocument: TXMLDocument;
BackGroundImagesNode: IXMLNode;
NodeName: string;
begin
XMLFile := TRealICQClient.GetUserDir + BackGroundImagesXMLFile;
XMLDocument := TXMLDocument.Create(Self);
try
XMLDocument.Active := True;
if not FileExists(XMLFile) then
begin
CopyFile(PChar(ExtractFilePath(paramstr(0)) + ConfigXMLFilePath + BackGroundImagesXMLFile), PChar(XMLFile), False);
XMLDocument.Active := True;
end;
XMLDocument.LoadFromFile(XMLFile);
BackGroundImagesNode := XMLDocument.DocumentElement;
if FCategory = tcNormal then
NodeName := 'U' + FReceiver
else
NodeName := 'T' + FTeamID;
try
BackGroundImagesNode.ChildNodes.FindNode(NodeName).Attributes['BackGroundImage'] := FBackGroundImage;
except
BackGroundImagesNode.AddChild(NodeName).Attributes['BackGroundImage'] := FBackGroundImage;
end;
XMLDocument.SaveToFile();
finally
XMLDocument.Free;
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.LoadWindowColor;
var
XMLFile: string;
XMLDocument: TXMLDocument;
WindowColorsNode: IXMLNode;
NodeName: string;
begin
XMLFile := TRealICQClient.GetUserDir + WindowColorsXMLFile;
XMLDocument := TXMLDocument.Create(Self);
try
XMLDocument.Active := True;
if not FileExists(XMLFile) then
begin
CopyFile(PChar(ExtractFilePath(paramstr(0)) + ConfigXMLFilePath + WindowColorsXMLFile), PChar(XMLFile), False);
XMLDocument.Active := True;
end;
XMLDocument.LoadFromFile(XMLFile);
WindowColorsNode := XMLDocument.DocumentElement;
if FCategory = tcNormal then
NodeName := 'U' + FReceiver
else
NodeName := 'T' + FTeamID;
FWindowColor := MainForm.UIMainColor;
FUseSelfColor := False;
try
if WindowColorsNode.ChildNodes.FindNode(NodeName) <> nil then
begin
FWindowColor := WindowColorsNode.ChildNodes.FindNode(NodeName).Attributes['WindowColor'];
if FWindowColor <> MainForm.UIMainColor then
FUseSelfColor := True;
end;
except
end;
ChangeUIColor(FWindowColor);
finally
XMLDocument.Free;
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.AddImageToInput(AFileName: string; ARichEd: TRealICQRichEdit);
var
gifImage: TGifImage;
newBitmap: TBitmap;
newJpg: TJPegImage;
TempFaceFileName: string;
Face: TFace;
MD5HashValue: MD5Digest;
MD5HashString: string;
AOldFileName: string;
iLoop: Integer;
Sys32Dir: string;
pSys32Dir: array[0..Max_Path] of char;
begin
try
//判断是否为系统表情
for iLoop := 0 to MainForm.FaceList.Count - 1 do
begin
Face := MainForm.FaceList.Objects[iLoop] as TFace;
if AnsiSameText(ReplaceStr(Face.FileName, '/', '\'), ReplaceStr(AFileName, '/', '\')) then
begin
ARichEd.InsertImage(Face.FileName, iLoop);
Exit;
end;
end;
newJpg := TJPegImage.Create;
newBitmap := Tbitmap.create;
gifImage := TGifImage.Create;
try
if AnsiSameText(ExtractFileExt(AFileName), '.BMP') then
begin
newBitmap.LoadFromFile(AFileName);
newJpg.Assign(newBitmap);
newJpg.CompressionQuality := 90;
newJpg.Compress;
end
else if AnsiSameText(ExtractFileExt(AFileName), '.GIF') then
begin
gifImage.LoadFromFile(AFileName);
end
else if AnsiSameText(ExtractFileExt(AFileName), '.PNG') then
begin
end
else
begin
newJpg.LoadFromFile(AFileName);
end;
if AnsiSameText(ExtractFileExt(AFileName), '.GIF') then
begin
AFileName := MainForm.RealICQClient.GetReceivedFaceDir + 'SC' + IntToStr(GetTickCount) + '.GIF';
gifImage.SaveToFile(AFileName);
end
else if AnsiSameText(ExtractFileExt(AFileName), '.PNG') then
begin
AOldFileName := AFileName;
AFileName := MainForm.RealICQClient.GetReceivedFaceDir + 'SC' + IntToStr(GetTickCount) + '.PNG';
CopyFile(PChar(AOldFileName), PChar(AFileName), False);
end
else
begin
AFileName := MainForm.RealICQClient.GetReceivedFaceDir + 'SC' + IntToStr(GetTickCount) + '.JPG';
newJpg.SaveToFile(AFileName);
end;
// Debug(AFileName, '生成截图');
MD5HashValue := MD5File(AFileName);
MD5HashString := MD5.MD5Print(MD5HashValue);
// Debug(MD5HashString, '计算截图MD5');
if AnsiSameText(ExtractFileExt(AFileName), '.GIF') then
TempFaceFileName := ExtractFilePath(AFileName) + MD5HashString + '.GIF'
else if AnsiSameText(ExtractFileExt(AFileName), '.PNG') then
TempFaceFileName := ExtractFilePath(AFileName) + MD5HashString + '.PNG'
else
TempFaceFileName := ExtractFilePath(AFileName) + MD5HashString + '.JPG';
RenameFile(AFileName, TempFaceFileName);
Face := TFace.Create(TempFaceFileName, '', '', MD5HashString, '');
// Debug(TempFaceFileName, '重命名截图');
try
ARichEd.InsertImage(TempFaceFileName, BaseTempFaceIndex + MainForm.TempFaceList.AddObject(MD5HashString, Face));
except
on e: exception do
begin
Log(E.Message, 'ARichEd.InsertImage');
GetSystemDirectory(pSys32Dir, Max_Path);
Sys32Dir := StrPas(pSys32Dir);
CopyFile(PChar(ExtractFilePath(paramstr(0)) + ImageX2_DLL_PACH), PChar(Sys32Dir + '\ImageX2.dll'), False);
try
WinExec(PChar('regsvr32 /s "' + 'ImageX2.dll"'), SW_HIDE);
except
end;
Sleep(500);
ARichEd.InsertImage(TempFaceFileName, BaseTempFaceIndex + MainForm.TempFaceList.AddObject(MD5HashString, Face));
end;
end;
finally
gifImage.Free;
newbitmap.free;
newjpg.Free;
end;
except
on E: Exception do
begin
Log(E.Message, 'TTalkingForm.AddImageToInput');
raise;
end;
end;
end;
//------------------------------------------------------------------
procedure TTalkingForm.MClearWindowClick(Sender: TObject);
begin
actClearWeb.Execute;
actClearEdit.Execute;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.SaveWindowColor;
var
XMLFile: string;
XMLDocument: TXMLDocument;
WindowColorsNode: IXMLNode;
NodeName: string;
begin
XMLFile := TRealICQClient.GetUserDir + WindowColorsXMLFile;
XMLDocument := TXMLDocument.Create(Self);
try
XMLDocument.Active := True;
if not FileExists(XMLFile) then
begin
CopyFile(PChar(ExtractFilePath(paramstr(0)) + ConfigXMLFilePath + WindowColorsXMLFile), PChar(XMLFile), False);
XMLDocument.Active := True;
end;
XMLDocument.LoadFromFile(XMLFile);
WindowColorsNode := XMLDocument.DocumentElement;
if FCategory = tcNormal then
NodeName := 'U' + FReceiver
else
NodeName := 'T' + FTeamID;
try
WindowColorsNode.ChildNodes.FindNode(NodeName).Attributes['WindowColor'] := FWindowColor;
except
WindowColorsNode.AddChild(NodeName).Attributes['WindowColor'] := FWindowColor;
end;
XMLDocument.SaveToFile();
FUseSelfColor := (FWindowColor <> MainForm.UIMainColor);
finally
XMLDocument.Free;
end;
end;
procedure TTalkingForm.sbpSMSClick(Sender: TObject);
begin
if (not MainForm.RealICQClient.UserPermission.EnableMultiSendSms) or (not MainForm.RealICQClient.UserPermission.EnableSendSms) then
begin
Dialogs.ShowMessage('您没有手机短信群发权限! ');
Exit;
end;
OpenTeamSMSForm(self.TeamID);
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.miColorClick(Sender: TObject);
begin
ChangeUIColor((Sender as TMenuItem).Tag);
FWindowColor := (Sender as TMenuItem).Tag;
SaveWindowColor;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.miMoreColorsClick(Sender: TObject);
begin
MainForm.ColorDialog.Color := FWindowColor;
if MainForm.ColorDialog.Execute then
begin
ChangeUIColor(MainForm.ColorDialog.Color);
FWindowColor := MainForm.ColorDialog.Color;
SaveWindowColor;
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.CapturedVideoImage(Sender: TObject; ALoginName: string; ABitmap: TBitmap);
begin
try
if not FSettedMyVideImageSize then
begin
miShowMyVideo.Click;
//ImgMyVideoBorder.Refresh;
Application.ProcessMessages;
if ABitmap.Width >= 320 then
miMyVideoBigSize.Click
else
miMyVideoSmallSize.Click;
FSettedMyVideImageSize := True;
end;
ImgMyVideo.Picture.Bitmap.Assign(ABitmap);
except
end;
end;
procedure TTalkingForm.cardYourResize(Sender: TObject);
begin
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ReceivedVideoImage(Sender: TObject; ALoginName: string; ABitmap: TBitmap);
begin
try
if not FSettedYourVideImageSize then
begin
miShowYourVideo.Visible := True;
miYourVideoSize.Visible := True;
miSaveYourVideoImageAs.Visible := True;
miShowVideoForm.Visible := True;
miShowYourVideo.Click;
Application.ProcessMessages;
if ABitmap.Width >= 320 then
miYourVideoBigSize.Click
else
miYourVideoSmallSize.Click;
FSettedYourVideImageSize := True;
end;
if VideoForm <> nil then
VideoForm.ImgYourVideo.Picture.Bitmap.Assign(ABitmap)
else
ImgYourVideo.Picture.Bitmap.Assign(ABitmap);
except
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ReEnabledVideoActionTimerTimer(Sender: TObject);
begin
ReEnabledVideoActionTimer.Enabled := False;
actVideo.Enabled := True;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowGettedVideoTransmiteRequest;
begin
try
if FVideoMission <> nil then
begin
if FVideoMission.FIsSource then
begin
if FVideoMission.FAccepted then
FVideoMission.ShowStopped(True)
else
FVideoMission.ShowCancel;
end
else
begin
if FVideoMission.FAccepted then
FVideoMission.ShowStopped(True)
else
FVideoMission.ShowDeclined;
end;
FreeAndNil(FVideoMission);
end;
finally
FVideoMission := TVideoMission.Create(Self, False);
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowSendedVideoTransmiteRequest;
begin
try
FreeAndNil(FVideoMission);
finally
FVideoMission := TVideoMission.Create(Self, True);
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowCanceledVideoTransmite;
begin
try
if FVideoMission <> nil then
FVideoMission.ShowCancel;
finally
FreeAndNil(FVideoMission);
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowStoppedVideoTransmite(AIsStopper: Boolean);
var
NeedEnabledVideoAction: Boolean;
begin
NeedEnabledVideoAction := False;
if actVideo.Enabled then
begin
NeedEnabledVideoAction := True;
actVideo.Enabled := False;
end;
try
try
if FVideoMission <> nil then
FVideoMission.ShowStopped(AIsStopper);
finally
FreeAndNil(FVideoMission);
actStopVideo.Visible := False;
miShowYourVideo.Visible := False;
miYourVideoSize.Visible := False;
miSaveYourVideoImageAs.Visible := False;
miShowVideoForm.Visible := False;
if pgcYourInfo.ActivePage = tsYourVideo then
miShowYourHeadImage.Click;
miShowMyVideo.Visible := False;
miMyVideoSize.Visible := False;
miVideoSet.Visible := False;
miSaveMyVideoImageAs.Visible := False;
if pgcMyInfo.ActivePage = tsMyVideo then
miShowMyHeadImage.Click;
FreeAndNil(VideoForm);
end;
finally
if NeedEnabledVideoAction then
ReEnabledVideoActionTimer.Enabled := True;
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowGettedVideoTransmiteConnectted(ASendBigBmp, ARecvBigBmp: Boolean);
begin
try
if FVideoMission <> nil then
begin
FVideoMission.ShowConnectted(ASendBigBmp, ARecvBigBmp);
end;
except
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowGettedVideoTransmiteResponse(AAcceptted: Boolean);
begin
try
if FVideoMission <> nil then
begin
if AAcceptted then
begin
FVideoMission.ShowAcceptted;
TVideoTransmitter.SetVideoCapContainer(Self);
FRealICQClient.OnCapturedVideoImage := nil;
FRealICQClient.OnReceivedVideoImage := nil;
FRealICQClient.OnCapturedVideoImage := CapturedVideoImage;
FRealICQClient.OnReceivedVideoImage := ReceivedVideoImage;
actStopVideo.Visible := True;
try
ImgYourVideo.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + WorldCamPicture);
except
end;
if FRealICQClient.InstalledCamera then
begin
try
ImgMyVideo.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + WorldCamPicture);
except
end;
miShowMyVideo.Visible := True;
miMyVideoSize.Visible := True;
miVideoSet.Visible := True;
miSaveMyVideoImageAs.Visible := True;
miShowMyVideo.Click;
end;
end
else
FVideoMission.ShowDeclined;
end;
finally
if not AAcceptted then
FreeAndNil(FVideoMission);
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowGettedAudioTransmiteRequest;
begin
try
if FAudioMission <> nil then
begin
if FAudioMission.FIsSource then
begin
if FAudioMission.FAccepted then
FAudioMission.ShowStopped(True)
else
FAudioMission.ShowCancel;
end
else
begin
if FAudioMission.FAccepted then
FAudioMission.ShowStopped(True)
else
FAudioMission.ShowDeclined;
end;
FreeAndNil(FAudioMission);
end;
finally
FAudioMission := TAudioMission.Create(Self, False);
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowSendedAudioTransmiteRequest;
begin
try
FreeAndNil(FAudioMission);
finally
FAudioMission := TAudioMission.Create(Self, True);
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowCanceledAudioTransmite;
begin
try
if FAudioMission <> nil then
FAudioMission.ShowCancel;
finally
FreeAndNil(FAudioMission);
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowStoppedAudioTransmite(AIsStopper: Boolean);
begin
try
if FAudioMission <> nil then
FAudioMission.ShowStopped(AIsStopper);
spbSpk.Visible := False;
spbMic.Visible := False;
MasterVolume.Visible := False;
MicrophoneVolume.Visible := False;
finally
FreeAndNil(FAudioMission);
end;
end;
procedure TTalkingForm.CalculatedWaveInVolume(Sender: TObject; ALoginName: string; AVolume: Integer);
begin
try
MicrophoneVolume.PeakValue := AVolume;
except
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.CalculatedWaveOutVolume(Sender: TObject; ALoginName: string; AVolume: Integer);
begin
try
MasterVolume.PeakValue := AVolume;
except
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowGettedRemoteControlTransmiteRequest;
begin
try
if FRemoteControlMission <> nil then
begin
if FRemoteControlMission.FIsSource then
begin
if FRemoteControlMission.FAccepted then
FRemoteControlMission.ShowStopped(True)
else
FRemoteControlMission.ShowCancel;
end
else
begin
if FRemoteControlMission.FAccepted then
FRemoteControlMission.ShowStopped(True)
else
FRemoteControlMission.ShowDeclined;
end;
FreeAndNil(FRemoteControlMission);
end;
finally
FRemoteControlMission := TRemoteControlMission.Create(Self, False);
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowSendedRemoteControlTransmiteRequest;
begin
try
FreeAndNil(FRemoteControlMission);
finally
FRemoteControlMission := TRemoteControlMission.Create(Self, True);
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowCanceledRemoteControlTransmite;
begin
try
if FRemoteControlMission <> nil then
FRemoteControlMission.ShowCancel;
finally
FreeAndNil(FRemoteControlMission);
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowStoppedRemoteControlTransmite(AIsStopper: Boolean);
begin
try
if FRemoteControlMission <> nil then
FRemoteControlMission.ShowStopped(AIsStopper);
finally
pnlRemoteControl.Visible := False;
// pnlMyInfo.Visible := True;
pnlYourInfo.Visible := True;
pnlShowHideUserInfo.Visible := True;
pnlShowHideUserInfo.Width := 10;
if (not FRemoteControlMission.FIsSource) and (RemoteControlForm <> nil) then
begin
LockWindowUpdate(GetDesktopWindow);
try
OpenRemoteControlPanel;
RemoteControlForm.FTalkingForm := nil;
try
RemoteControlForm.Close;
finally
FreeAndNil(RemoteControlForm);
end;
pnlRC.Visible := False;
SplitterRC.Visible := False;
pnlUserInformation.Visible := True;
Width := FOldWidth;
Height := FOldHeight;
finally
LockWindowUpdate(0);
end;
end;
FreeAndNil(FRemoteControlMission);
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.FullScreenRemoteControlPanel;
begin
if RemoteControlForm = nil then
Exit;
LockWindowUpdate(GetDesktopWindow);
try
RemoteControlForm.Parent := nil;
RemoteControlForm.BorderStyle := bsNone;
RemoteControlForm.Align := alNone;
RemoteControlForm.btUP.Caption := '浮动停靠';
RemoteControlForm.pnlScreen.Visible := True;
RemoteControlForm.pnlRCWorkArea.Constraints.MaxWidth := 0;
RemoteControlForm.pnlRCWorkArea.Constraints.MaxHeight := 0;
RemoteControlForm.pnlClient.Constraints.MaxWidth := 0;
RemoteControlForm.pnlClient.Constraints.MaxHeight := 0;
RemoteControlForm.Constraints.MaxWidth := 0;
RemoteControlForm.Constraints.MaxHeight := 0;
RemoteControlForm.Left := -3;
RemoteControlForm.Top := -(3 + RemoteControlForm.pnlTop.Height);
RemoteControlForm.Width := Screen.Width + 6;
RemoteControlForm.Height := Screen.Height + 6 + RemoteControlForm.pnlTop.Height + RemoteControlForm.pnlBottom.Height;
pnlRC.Visible := False;
SplitterRC.Visible := False;
pnlUserInformation.Visible := True;
Width := FOldWidth;
Height := FOldHeight;
finally
LockWindowUpdate(0);
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.CloseRemoteControlPanel;
begin
if RemoteControlForm = nil then
Exit;
LockWindowUpdate(GetDesktopWindow);
try
RemoteControlForm.Parent := nil;
RemoteControlForm.BorderStyle := bsSizeable;
RemoteControlForm.Align := alNone;
RemoteControlForm.btUP.Caption := '浮动停靠';
RemoteControlForm.pnlScreen.Visible := False;
RemoteControlForm.pnlRCWorkArea.Constraints.MaxWidth := RemoteControlForm.imgRCScreen.Width + 4;
RemoteControlForm.pnlRCWorkArea.Constraints.MaxHeight := RemoteControlForm.imgRCScreen.Height + 4;
RemoteControlForm.pnlClient.Constraints.MaxWidth := RemoteControlForm.pnlRCWorkArea.Constraints.MaxWidth;
RemoteControlForm.pnlClient.Constraints.MaxHeight := RemoteControlForm.pnlRCWorkArea.Constraints.MaxHeight + RemoteControlForm.pnlTop.Height + RemoteControlForm.pnlBottom.Height;
RemoteControlForm.Constraints.MaxWidth := RemoteControlForm.pnlClient.Constraints.MaxWidth + (RemoteControlForm.Width - RemoteControlForm.pnlClient.Width);
RemoteControlForm.Constraints.MaxHeight := RemoteControlForm.pnlClient.Constraints.MaxHeight + (RemoteControlForm.Height - RemoteControlForm.pnlClient.Height);
if RemoteControlForm.Constraints.MaxWidth < Screen.WorkAreaWidth then
RemoteControlForm.Width := RemoteControlForm.Constraints.MaxWidth
else
RemoteControlForm.Width := Round(Screen.WorkAreaWidth * 0.8);
if RemoteControlForm.Constraints.MaxHeight < Screen.WorkAreaHeight then
RemoteControlForm.Height := RemoteControlForm.Constraints.MaxHeight
else
RemoteControlForm.Height := Round(Screen.WorkAreaHeight * 0.8);
RemoteControlForm.Left := (Screen.WorkAreaWidth - RemoteControlForm.Width) div 2;
RemoteControlForm.Top := (Screen.WorkAreaHeight - RemoteControlForm.Height) div 2;
pnlRC.Visible := False;
SplitterRC.Visible := False;
pnlUserInformation.Visible := True;
Width := FOldWidth;
Height := FOldHeight;
finally
LockWindowUpdate(0);
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.OpenRemoteControlPanel;
begin
if RemoteControlForm = nil then
Exit;
LockWindowUpdate(GetDesktopWindow);
try
Left := 0;
Top := 0;
Width := Screen.Width;
Height := Screen.WorkAreaHeight;
pnlRC.Visible := True;
SplitterRC.Visible := True;
RemoteControlForm.pnlRCWorkArea.Constraints.MaxWidth := 0;
RemoteControlForm.pnlRCWorkArea.Constraints.MaxHeight := 0;
RemoteControlForm.pnlClient.Constraints.MaxWidth := 0;
RemoteControlForm.pnlClient.Constraints.MaxHeight := 0;
RemoteControlForm.Constraints.MaxWidth := 0;
RemoteControlForm.Constraints.MaxHeight := 0;
RemoteControlForm.Parent := pnlRC;
RemoteControlForm.BorderStyle := bsNone;
RemoteControlForm.ParentWindow := pnlRC.Handle;
RemoteControlForm.Align := alClient;
RemoteControlForm.WindowState := wsMaximized;
RemoteControlForm.btUP.Caption := '浮动窗口';
RemoteControlForm.pnlScreen.Visible := False;
//if Width - 258 - 50 < RemoteControlForm.imgRCScreen.Width + 20 then
// pnlRC.Width := Width - 258 - 50
//else
// pnlRC.Width := RemoteControlForm.imgRCScreen.Width + 10;
SplitterRC.Left := pnlRC.Left - 5;
pnlUserInformation.Visible := False;
PostMessage(RemoteControlForm.Handle, WM_SIZE, 0, 0);
finally
LockWindowUpdate(0);
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowGettedRemoteControlTransmiteRecvedScreenSize(AWidth, AHeight: Integer);
begin
try
if FRemoteControlMission <> nil then
begin
FRemoteControlMission.RecvedScreenSize;
if (not FRemoteControlMission.FIsSource) then
begin
LockWindowUpdate(GetDesktopWindow);
try
if RemoteControlForm = nil then
begin
FOldWidth := Width;
FOldHeight := Height;
Left := 0;
Top := 0;
Width := Screen.Width;
Height := Screen.WorkAreaHeight;
pnlRC.Visible := True;
SplitterRC.Visible := True;
RemoteControlForm := TRemoteControlForm.Create(pnlRC);
RemoteControlForm.FTalkingForm := Self;
RemoteControlForm.Parent := pnlRC;
RemoteControlForm.ParentWindow := pnlRC.Handle;
RemoteControlForm.Align := alClient;
RemoteControlForm.WindowState := wsMaximized;
RemoteControlForm.ChangeUIColor(FormColor);
RemoteControlForm.imgRCScreen.Picture.Bitmap.SetSize(AWidth, AHeight);
RemoteControlForm.imgRCScreen.Width := AWidth;
RemoteControlForm.imgRCScreen.Height := AHeight;
RemoteControlForm.imgRCScreen.Cursor := crDefault;
RemoteControlForm.lblRCState.Caption := '控制中。';
RemoteControlForm.lblRCState2.Caption := '控制中。';
RemoteControlForm.Show;
if Width - 258 - 50 < RemoteControlForm.imgRCScreen.Width + 20 then
pnlRC.Width := Width - 258 - 50
else
pnlRC.Width := RemoteControlForm.imgRCScreen.Width + 10;
SplitterRC.Left := pnlRC.Left - 5;
pnlUserInformation.Visible := False;
end
else
begin
RemoteControlForm.imgRCScreen.Picture.Bitmap.SetSize(AWidth, AHeight);
RemoteControlForm.imgRCScreen.Width := AWidth;
RemoteControlForm.imgRCScreen.Height := AHeight;
end;
PostMessage(RemoteControlForm.Handle, WM_SIZE, 0, 0);
finally
LockWindowUpdate(0);
end;
end;
end;
except
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowGettedRemoteControlTransmiteControlBeControlResponse(AAcceptted: Boolean);
begin
try
if FRemoteControlMission <> nil then
begin
FRemoteControlMission.ShowBeControlResponse(AAcceptted);
if not FRemoteControlMission.FIsSource then
begin
if RemoteControlForm <> nil then
begin
if AAcceptted then
begin
RemoteControlForm.imgRCScreen.Cursor := crDefault;
RemoteControlForm.lblRCState.Caption := '控制中。';
RemoteControlForm.lblRCState2.Caption := '控制中。';
end
else
begin
RemoteControlForm.imgRCScreen.Cursor := crNo;
RemoteControlForm.lblRCState.Caption := '未被控制。';
RemoteControlForm.lblRCState2.Caption := '未被控制。';
end;
end;
end
else
begin
if AAcceptted then
lblRCState.Caption := '控制中。'
else
lblRCState.Caption := '未被控制。';
end;
end;
except
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowGettedRemoteControlTransmiteControlControlResponse(AAcceptted: Boolean);
begin
try
if FRemoteControlMission <> nil then
begin
FRemoteControlMission.ShowControlResponse(AAcceptted);
end;
except
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowGettedRemoteControlTransmiteControlRequest;
begin
try
if FRemoteControlMission <> nil then
begin
FRemoteControlMission.AccepteControl;
end;
except
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowSendedRemoteControlTransmiteControlRequest;
begin
try
if FRemoteControlMission <> nil then
begin
FRemoteControlMission.ShowControlRequest;
end;
except
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowCancelControlRemoteControlTransmite;
begin
try
if FRemoteControlMission <> nil then
begin
FRemoteControlMission.ShowCancelControl;
if RemoteControlForm <> nil then
begin
RemoteControlForm.imgRCScreen.Cursor := crNo;
RemoteControlForm.lblRCState.Caption := '未被控制。';
RemoteControlForm.lblRCState2.Caption := '未被控制。';
end;
lblRCState.Caption := '未被控制。';
end;
except
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowGettedRemoteControlTransmiteConnectted;
begin
try
if FRemoteControlMission <> nil then
begin
FRemoteControlMission.AccepteSend;
end;
except
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowGettedRemoteControlTransmiteResponse(AAcceptted: Boolean);
begin
try
if FRemoteControlMission <> nil then
begin
if AAcceptted then
begin
FRemoteControlMission.ShowAcceptted;
end
else
FRemoteControlMission.ShowDeclined;
end;
finally
if not AAcceptted then
FreeAndNil(FRemoteControlMission);
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowGettedAudioTransmiteConnectted;
begin
try
if FAudioMission <> nil then
begin
FAudioMission.ShowConnectted;
spbSpk.Visible := True;
spbMic.Visible := True;
MasterVolume.Visible := True;
MicrophoneVolume.Visible := True;
FRealICQClient.OnCalculatedWaveInVolume := CalculatedWaveInVolume;
FRealICQClient.OnCalculatedWaveOutVolume := CalculatedWaveOutVolume;
end;
except
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowGettedAudioTransmiteResponse(AAcceptted: Boolean);
begin
try
if FAudioMission <> nil then
begin
if AAcceptted then
begin
FAudioMission.ShowAcceptted;
FRealICQClient.OnCalculatedWaveInVolume := nil;
FRealICQClient.OnCalculatedWaveOutVolume := nil;
end
else
FAudioMission.ShowDeclined;
end;
finally
if not AAcceptted then
FreeAndNil(FAudioMission);
end;
end;
//------------------------------------------------------------------------------
function TTalkingForm.FindUpDownFileByBaseID(ABaseID: string): TUploadOrDownloadFileMission;
var
iLoop: Integer;
AUpDownFileMissions: TUploadOrDownloadFileMission;
begin
Result := nil;
for iLoop := 0 to FUpDownFileMissions.Count - 1 do
begin
AUpDownFileMissions := TUploadOrDownloadFileMission(FUpDownFileMissions[iLoop]);
if AnsiSameStr(AUpDownFileMissions.BaseID, ABaseID) then
begin
Result := AUpDownFileMissions;
Exit;
end;
end;
end;
function TTalkingForm.FindUpNodeFileByBaseID(ABaseID: string): TFileTransferWithNode;
var
iLoop: Integer;
AUpDownFileMissions: TFileTransferWithNode;
begin
Result := nil;
for iLoop := 0 to FNodeTransferMissions.Count - 1 do
begin
AUpDownFileMissions := TFileTransferWithNode(FNodeTransferMissions[iLoop]);
if AnsiSameStr(AUpDownFileMissions.BaseID, ABaseID) then
begin
Result := AUpDownFileMissions;
Exit;
end;
end;
end;
//------------------------------------------------------------------------------
function TTalkingForm.FindTransmitFileByBaseID(ABaseID: string): TTransmiteFileMission;
var
iLoop: Integer;
ATransmiteFileMission: TTransmiteFileMission;
begin
Result := nil;
for iLoop := 0 to FTransmiteFileMissions.Count - 1 do
begin
ATransmiteFileMission := TTransmiteFileMission(FTransmiteFileMissions[iLoop]);
if AnsiSameStr(ATransmiteFileMission.BaseID, ABaseID) then
begin
Result := ATransmiteFileMission;
Exit;
end;
end;
end;
//------------------------------------------------------------------------------
function TTalkingForm.FindFileTransmitByBaseID(ABaseID: string): TUploadOrDownloadFileMission;
var
iLoop: Integer;
AUploadOrDownloadFileMission: TUploadOrDownloadFileMission;
begin
Result := nil;
for iLoop := 0 to FFileTransmitters.Count - 1 do
begin
AUploadOrDownloadFileMission := FFileTransmitters.Objects[iLoop] as TUploadOrDownloadFileMission;
if AnsiSameStr(AUploadOrDownloadFileMission.BaseID, ABaseID) then
begin
Result := AUploadOrDownloadFileMission;
Exit;
end;
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowGettedSendFileRequest(ASendFileRequestInfo: TSendFileRequestInfo);
var
ATransmiteFileMission, ATransmiteFileMissionTemp: TTransmiteFileMission;
iLoop, ReceivingFaceCount: Integer;
FileExt: string;
begin
ATransmiteFileMission := TTransmiteFileMission.Create(Self, tdReceiver, ASendFileRequestInfo.FileName, ASendFileRequestInfo.MD5Code, ASendFileRequestInfo.FileLength, ASendFileRequestInfo.Objective, ASendFileRequestInfo.FileExtImage);
ATransmiteFileMission.FOppositeID := ASendFileRequestInfo.OppositeID;
if ASendFileRequestInfo.Objective = foFace then
begin
ReceivingFaceCount := 0;
for iLoop := 0 to FTransmiteFileMissions.Count - 1 do
begin
ATransmiteFileMissionTemp := TTransmiteFileMission(FTransmiteFileMissions[iLoop]);
if ATransmiteFileMissionTemp = ATransmiteFileMission then
continue;
if ATransmiteFileMissionTemp.FObjective = foFile then
continue;
if (ATransmiteFileMissionTemp.FDirection = tdReceiver) and (ATransmiteFileMissionTemp.FAccepted = True) then
begin
Inc(ReceivingFaceCount);
if ReceivingFaceCount >= 1 then
Exit; //同时只允许传送1个表情
end;
end;
ATransmiteFileMission.Accept(TRealICQClient.GetReceivedFaceDir + ASendFileRequestInfo.FileName);
end
else
begin
FileExt := ExtractFileExt(ASendFileRequestInfo.FileName);
if (MainForm.RecvFileSafeLevel = fsHigh) or ((MainForm.RecvFileSafeLevel = fsMiddle) and (AnsiSameText(FileExt, '.EXE') or AnsiSameText(FileExt, '.COM'))) then
begin
ATransmiteFileMission.Decline;
FreeAndNil(ATransmiteFileMission);
end;
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowSendOfflineFileRequest(AOppositeID: Cardinal);
var
iLoop: Integer;
ATransmiteFileMission: TTransmiteFileMission;
begin
for iLoop := 0 to FTransmiteFileMissions.Count - 1 do
begin
ATransmiteFileMission := TTransmiteFileMission(FTransmiteFileMissions[iLoop]);
if ATransmiteFileMission.FOppositeID = AOppositeID then
begin
ATransmiteFileMission.GettedSendOfflineFileRequest;
FreeAndNil(ATransmiteFileMission);
Exit;
end;
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowCancelSendFile(AOppositeID: Cardinal);
var
iLoop: Integer;
ATransmiteFileMission: TTransmiteFileMission;
begin
for iLoop := 0 to FTransmiteFileMissions.Count - 1 do
begin
ATransmiteFileMission := TTransmiteFileMission(FTransmiteFileMissions[iLoop]);
if ATransmiteFileMission.FOppositeID = AOppositeID then
begin
ATransmiteFileMission.Cancel;
FreeAndNil(ATransmiteFileMission);
Exit;
end;
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.CancelAllSendFile;
var
iLoop: Integer;
ATransmiteFileMission: TTransmiteFileMission;
begin
for iLoop := FTransmiteFileMissions.Count - 1 downto 0 do
begin
ATransmiteFileMission := TTransmiteFileMission(FTransmiteFileMissions[iLoop]);
if not ATransmiteFileMission.FAccepted then
begin
if ATransmiteFileMission.FDirection = tdSender then
ATransmiteFileMission.Cancel
else
ATransmiteFileMission.Decline;
end
else if not ATransmiteFileMission.FMovingFile then
begin
ATransmiteFileMission.Stop;
end;
FreeAndNil(ATransmiteFileMission);
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.CancelAllUpDdownFile;
var
iLoop: Integer;
ATransmiteFileMission: TUploadOrDownloadFileMission;
begin
for iLoop := FUpDownFileMissions.Count - 1 downto 0 do
begin
ATransmiteFileMission := TUploadOrDownloadFileMission(FUpDownFileMissions[iLoop]);
ATransmiteFileMission.Stop;
FreeAndNil(ATransmiteFileMission);
end;
end;
procedure TTalkingForm.CancelAllUpDdownNodeFile;
var
iLoop: Integer;
ATransmiteFileMission: TFileTransferWithNode;
begin
for iLoop := FNodeTransferMissions.Count - 1 downto 0 do
begin
ATransmiteFileMission := TFileTransferWithNode(FNodeTransferMissions[iLoop]);
FreeAndNil(ATransmiteFileMission);
end;
end;
//------------------------------------------------------------------------------
procedure TTalkingForm.ShowSendedSendFileRequest(APtoPFileTransmitter: TPtoPFileTransmitter);
var
ATransmiteFileMission: TTransmiteFileMission;
begin
ATransmiteFileMission := TTransmiteFileMission.Create(Self, tdSender, APtoPFileTransmitter.FileName, APtoPFileTransmitter.MD5Code, APtoPFileTransmitter.StreamLength, APtoPFileTransmitter.Objective, APtoPFileTransmitter.FileExtImage);
ATransmiteFileMission.FPtoPFileTransmitter := APtoPFileTransmitter;
ATransmiteFileMission.FPtoPFileTransmitter.OnAcceptted := ATransmiteFileMission.FileTransmitterAcceptted;
ATransmiteFileMission.FPtoPFileTransmitter.OnDeclined := ATransmiteFileMission.FileTransmitterDeclined;
end;
{将消息内容显示在WebBrowser中}
//------------------------------------------------------------------------------
procedure TTalkingForm.AddMessageToWebBrowser(SenderID: string; SenderName, FontStr, MessageStr: string; SendDateTime: TDateTime; IsEncry: Boolean; ShowSendFailed: Boolean = False; IsHistory: Boolean = False);
var
MsgContent, HexString, HTML, SenderColor: string;
TextFont: TFont;
ID: string;
begin
ID := IntToStr(GetTickCount);
TextFont := TFont.Create;
StringToFont(FontStr, TextFont);
MsgContent := FilterHTMLCode(SenderName, MainForm.AllowURL);
if Category = tcTeam then
MsgContent := MsgContent + '(' + Copy(SenderId, Pos('-', SenderId) + 1, Length(SenderId)) + ')';
if CompareDate(Now, SendDateTime) = EqualsValue then
MsgContent := MsgContent + ' ' + TimeToStr(SendDateTime)
else
MsgContent := MsgContent + ' ' + DateTimeToStr(SendDateTime);
if ShowSendFailed then
MsgContent := MsgContent + '(发送消息超时)'
else if (not AnsiSameText(SenderID, MainForm.RealICQClient.LoginName)) and (not IsHistory) then
MsgContent := MsgContent + '
';
if not IsHistory then
begin
if AnsiSameText(SenderID, FReceiver) then
SenderColor := '#009900'
else
SenderColor := '#0000FF';
end
else
SenderColor := '#686868';
HTML := '
| ';
HTML := HTML + ' |