RealICQModel.pas 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739
  1. unit RealICQModel;
  2. interface
  3. uses
  4. Classes, Windows, SysUtils, xFonts, Graphics;
  5. type
  6. //短信控制模式 0:按月限制 按天限制
  7. TSendSMSLimitMode=(smsMonthLimit=0,smsDayLimit=1);
  8. //短信可发数量控制的应用角色 0:应用部门的可发数量 1 应用用户本人的可发数量
  9. TSendSMSLimitRole=(smsBranchRole=0,smsUserRole=1,smsUnLimit=2);
  10. //连接成功后的动作
  11. TRealICQConnectType = (ctLogin, ctRegister);
  12. //工作模式
  13. TRealICQWorkingMode = (wmPublic = 0,
  14. wmCorporation = 1);
  15. //登录状态
  16. TRealICQLoginState = (stOffline = 0,
  17. stOnline = 1,
  18. stLeave = 2,
  19. stBusy = 3,
  20. stMute = 4,
  21. stHidden = 5,
  22. stMobileOnline = 6);
  23. TRealICQSexType = (seMale = 0,
  24. seFemale = 1,
  25. seUnknown = 2);
  26. TRealICQLoginResultType = ( rtLoginOK = 0,
  27. rtCanUpdate = 1,
  28. rtMustUpdate = 2,
  29. rtVersionError = 3,
  30. rtAuthorizationError = 4,
  31. rtOther = 5,rtLoginErrorByDisplayName=6);
  32. TRealICQRegResultType = ( rgRegOK = 0,
  33. rgCanUpdate = 1,
  34. rgMustUpdate = 2,
  35. rgVersionError = 3,
  36. rgLoginNameExist = 4,
  37. rgOther = 5);
  38. TRealICQHeadImageFileType = (
  39. htNONE = 255,
  40. htJPG = 0,
  41. htGIF = 1,
  42. htBMP = 2
  43. );
  44. TRealICQSearchType = ( stLookOnline = 0,
  45. stByLoginName = 1,
  46. stByDisplayName = 2);
  47. TRealICQMatchingType = ( mtExactSearch = 0,
  48. mtLikeSearch = 1);
  49. TRealICQExInfoSecretLevel = ( slOnlyFriendCanSee = 0,
  50. slAllCanSee = 1,
  51. slAllCannotSee = 2);
  52. TRealICQTeamValidateType = ( tvAllCanJoinTeam = 0,
  53. tvNeedValidate = 1,
  54. tvAllCannotJoinTeam = 2,
  55. tvAllCannotJoinTeamNew = 4);
  56. TRealICQTeamSearchType = ( tsByTeamID = 0,
  57. tsByTeamCaption = 1,
  58. tsByTeamIntro = 2,
  59. tsByTeamCreater = 3);
  60. TFileTransmitterObjective = (foFile = 0, foFace = 1);
  61. TRealICQTeam = class
  62. public
  63. TeamID: string;
  64. TeamCaption: string;
  65. TeamCreater: string;
  66. TeamCallBoard: string;
  67. TeamIntro: string;
  68. TeamValidate: TRealICQTeamValidateType;
  69. TeamManagers: string;
  70. TeamMembers: string;
  71. IsTempTeam: Boolean;
  72. function Clone: TRealICQTeam;
  73. end;
  74. //保存用户权限类
  75. TUserPermission=class
  76. private
  77. FEnableSendSms:Boolean;
  78. FEnableMultiSendSms:Boolean;
  79. FAddrBookSize:SmallInt;
  80. FEnableBackup:Boolean;
  81. FSMSLimitMode:TSendSMSLimitMode;
  82. FSMSLimitRole:TSendSMSLimitRole;
  83. FHasBeenSentSmsCount:Integer;
  84. FCanSendSmsCount:Integer;
  85. public
  86. property EnableSendSms:Boolean read FEnableSendSms write FEnableSendSms;
  87. property EnableMultiSendSms:Boolean read FEnableMultiSendSms write FEnableMultiSendSms;
  88. property EnableBackup:Boolean read FEnableBackup write FEnableBackup;
  89. property AddrBookSize:SmallInt read FAddrBookSize write FAddrBookSize;
  90. property SMSLimitMode:TSendSMSLimitMode read FSMSLimitMode write FSMSLimitMode;
  91. property SMSLimitRole:TSendSMSLimitRole read FSMSLimitRole write FSMSLimitRole;
  92. property HasBeenSentSmsCount:Integer read FHasBeenSentSmsCount write FHasBeenSentSmsCount;
  93. property CanSendSmsCount:Integer read FCanSendSmsCount write FCanSendSmsCount;
  94. end;
  95. TLoginUser=class
  96. private
  97. FLoginName:string;
  98. FPassword:String;
  99. public
  100. property LoginName:String read FLoginName write FLoginName;
  101. property Password:String read FPassword write FPassword;
  102. end;
  103. TSearchResultRecord = class
  104. public
  105. LoginName: string;
  106. DisplayName: string;
  107. Watchword: string;
  108. LoginState: TRealICQLoginState;
  109. Sex: TRealICQSexType;
  110. end;
  111. TSearchTeamResultRecord = class
  112. public
  113. TeamID: String;
  114. TeamCaption: String;
  115. TeamIntro: String;
  116. TeamCreater: String;
  117. end;
  118. /// 存储系统消息接口信息
  119. TSysMsgInterface=class
  120. public
  121. ShowMsg:Boolean;
  122. SendToMobile:Boolean;
  123. SendToUMC:Boolean;
  124. MsgIID,
  125. InterFaceName,
  126. Remark:String;
  127. DefaultInterface:Boolean;
  128. Position:Integer;
  129. end;
  130. //Web标签信息
  131. TSystemNotices = class
  132. public
  133. Title: String;
  134. URL: String;
  135. EndDate: TDateTime;
  136. end;
  137. //Web标签信息
  138. TWebTabRecord = class
  139. private
  140. function GetIconFile: String;
  141. public
  142. ID: String;
  143. Name: String;
  144. Icon: String;
  145. Method: String;
  146. PostFields: String;
  147. URL: String;
  148. MustShow: Boolean;
  149. Content: String;
  150. property IconFile: String read GetIconFile;
  151. end;
  152. //部门数据
  153. TRealICQBranchInfo = class
  154. public
  155. ID: String;
  156. ParentID: String;
  157. BranchName: String;
  158. OnlineEmployee,
  159. EmployeeCount: Cardinal;
  160. IsGetUserList:Boolean;
  161. function Clone: TRealICQBranchInfo;
  162. end;
  163. TRealICQSystemMessageType = (mtBroadcast = 0, mtAdvertisement = 1,mtConfirmMsg=2);
  164. TRealICQSystemMessagePosition = (mpCenter = 0, mpRightBottom = 1, mpCustom = 2);
  165. TRealICQSystemMessage = class
  166. public
  167. MessageID: Integer;
  168. MessageType: TRealICQSystemMessageType;
  169. AutoOpenWindow: Boolean;
  170. Position: TRealICQSystemMessagePosition;
  171. Left: SmallInt;
  172. Top: SmallInt;
  173. Width: SmallInt;
  174. Height: SmallInt;
  175. Delay: double;
  176. MaxShowTimes: Byte;
  177. Title: String;
  178. Content: String;
  179. URL: String;
  180. AutoCloseTime: SmallInt;
  181. end;
  182. //用户数据
  183. TRealICQUser = class
  184. private
  185. FPort: Word;
  186. FRealICQClient: TObject;
  187. FRealICQPtoPBox: TObject;
  188. FClickedSNS: Boolean;
  189. function GetRealICQPtoPBox: TObject;
  190. function GetHeadImageFile: string;
  191. function GetAddress: string;
  192. function GetPort: Word;
  193. function GetHasNewSNSUpdate: Boolean;
  194. public
  195. Sex: TRealICQSexType;
  196. LoginName: string;
  197. DisplayName: string;
  198. Watchword: string;
  199. Remark: string;
  200. Remark1: string;
  201. RemarkTel: string;
  202. RemarkMobile: string;
  203. LoginState: TRealICQLoginState;
  204. LeaveMessage: string;
  205. Address: string;
  206. HeadImageFileType: TRealICQHeadImageFileType;
  207. HeadImageHashValue: string;
  208. InstalledCamera: Boolean;
  209. InstalledSoundCard: Boolean;
  210. LoginAtWeb: Boolean;
  211. LoginAsWaiter: Boolean;
  212. LastClickSNSUpdateTime: TDateTime;
  213. SNSUpdateTime: TDateTime;
  214. BranchID: string;
  215. TrueName,
  216. Company,
  217. Branch,
  218. Duty,
  219. Calling,
  220. Country,
  221. Province,
  222. City,
  223. Tel,
  224. Mobile,
  225. Email,
  226. Post,
  227. HomeAddress,
  228. URL,
  229. Intro: string;
  230. SeeInfoPermissions:byte; //查看用户资料的权限等级
  231. ShortMobile: string;
  232. OfficeID: string;
  233. OfflineAutoResponseEnabled: Boolean;
  234. OfflineAutoResponseText: string;
  235. Secret: TRealICQExInfoSecretLevel;
  236. CurrentExInfoVersion: Integer;
  237. //是否已经对比过版本信息
  238. IsComparedVer: Boolean;
  239. GettedOffliceAutoResponseSet: Boolean;
  240. Position: Double;
  241. LastReflashLoginStatus: Cardinal;
  242. constructor Create(ALoginName: string; ARealICQClient: TObject);
  243. destructor Destroy; override;
  244. procedure ClickedSNSIcon;
  245. function IsNeedRequestUserStatus: Boolean;
  246. property Port: Word read GetPort write FPort;
  247. property HeadImageFile: string read GetHeadImageFile;
  248. property HasNewSNSUpdate: Boolean read GetHasNewSNSUpdate;
  249. property RealICQPtoPBox: TObject read GetRealICQPtoPBox write FRealICQPtoPBox;
  250. property Nickname: String read DisplayName;
  251. end;
  252. TSendFileRequestInfo = class
  253. private
  254. FLoginName: string;
  255. FObjective: TFileTransmitterObjective;
  256. FOppositeID: Cardinal;
  257. FFileLength: Int64;
  258. FFileName: string;
  259. FMD5Code: string;
  260. FFileExtImage: string;
  261. protected
  262. public
  263. constructor Create(ALoginName: string;
  264. AObjective: TFileTransmitterObjective;
  265. AOppositeID: Cardinal;
  266. AFileLength: Int64;
  267. AFileName,
  268. AMD5Code,
  269. AFileExtImage: string);
  270. property LoginName: string read FLoginName write FLoginName;
  271. property Objective: TFileTransmitterObjective read FObjective write FObjective;
  272. property OppositeID: Cardinal read FOppositeID write FOppositeID;
  273. property FileLength: Int64 read FFileLength write FFileLength;
  274. property FileName: string read FFileName write FFileName;
  275. property MD5Code: string read FMD5Code write FMD5Code;
  276. property FileExtImage: string read FFileExtImage write FFileExtImage;
  277. end;
  278. TRealICQMessage = class
  279. private
  280. FSender: string;
  281. FReceiver: string;
  282. FFontStr: string;
  283. FMessageStr: string;
  284. FMessageID: Cardinal; {消息的ID,同时也是消息发送的Ticket}
  285. FSendDateTime: TDateTime;
  286. FIsEncryMessage:Boolean;
  287. FID:Integer;
  288. public
  289. constructor Create(ASender,
  290. AReceiver,
  291. AFontStr,
  292. AMessageStr: String;AIsEncryMessage:Boolean);
  293. published
  294. property Sender: string read FSender write FSender;
  295. property Receiver: string read FReceiver write FReceiver;
  296. property FontStr: string read FFontStr write FFontStr;
  297. property MessageStr: string read FMessageStr write FMessageStr;
  298. property MessageID: Cardinal read FMessageID write FMessageID;
  299. property SendDateTime: TDateTime read FSendDateTime write FSendDateTime;
  300. property IsEncryMessage:Boolean read FIsEncryMessage write FIsEncryMessage;
  301. property ID:Integer read FID write FID;
  302. end;
  303. TRealICQTeamMessage = class
  304. private
  305. FID:Integer;
  306. FIsEncryMessage:Boolean;
  307. FTeamID: string;
  308. FSender: string;
  309. FFontStr: string;
  310. FMessageStr: string;
  311. FMessageID: Cardinal; {消息的ID,同时也是消息发送的Ticket}
  312. FSendDateTime: TDateTime;
  313. public
  314. constructor Create(ATeamID: string;
  315. ASender,
  316. AFontStr,
  317. AMessageStr: string;IsEncry:Boolean);
  318. published
  319. property TeamID: string read FTeamID write FTeamID;
  320. property Sender: string read FSender write FSender;
  321. property FontStr: string read FFontStr write FFontStr;
  322. property MessageStr: string read FMessageStr write FMessageStr;
  323. property MessageID: Cardinal read FMessageID write FMessageID;
  324. property SendDateTime: TDateTime read FSendDateTime write FSendDateTime;
  325. property IsEncryMessage:Boolean read FIsEncryMessage write FIsEncryMessage;
  326. property ID:Integer read FID write FID;
  327. end;
  328. //主窗体广告位数据
  329. TMainFormAdversement = record
  330. Visible: Boolean;
  331. Height: SmallInt;
  332. URL: string;
  333. end;
  334. //对话窗体广告位数据
  335. TTalkingFormAdversement = record
  336. Visible: Boolean;
  337. Width: SmallInt;
  338. URL: string;
  339. end;
  340. //对话窗体广告位数据
  341. TWebSearchInfo = record
  342. Visible: Boolean;
  343. Title,
  344. URL: string;
  345. end;
  346. //表情类
  347. TFace = class
  348. private
  349. FName: String;
  350. FShortCut: String;
  351. FFileName: String;
  352. FMD5Code: String;
  353. FCategory: String;
  354. public
  355. constructor Create(AFileName, AShortCut, AName, AMD5Code: String; ACategory: String);
  356. procedure Assign(AFace: TFace);
  357. procedure SetFileName(Value: String);
  358. published
  359. property Name: String read FName write FName;
  360. property ShortCut: String read FShortCut write FShortCut;
  361. property FileName: String read FFileName write SetFileName;
  362. property MD5Code: String read FMD5Code write FMD5Code;
  363. property Category: String read FCategory write FCategory;
  364. end;
  365. TUsersHandleMessagesEvent=procedure(Sender: TObject; const AData: TBytes) of object;
  366. TRealICQManageAddrBookResultEvent=procedure(Sender: TObject;OperatModal:Integer;OperatCommand:Integer;RetValue,MessageId:Cardinal) of object;
  367. TRealICQLoginResultEvent = procedure(Sender: TObject; LoginResultType: TRealICQLoginResultType; ResultMessage: String) of object;
  368. TRealICQRegResultEvent = procedure(Sender: TObject; ALoginName: String; RegResultType: TRealICQRegResultType; ResultMessage: String) of object;
  369. TRealICQUserInformationReadyEvent = procedure(Sender: TObject; RealICQUser: TRealICQUser) of object;
  370. TRealICQBeDroppedEvent = procedure(Sender: TObject; Excuse: String) of object;
  371. TRealICQLoginFailedEvent = procedure(Sender: TObject; E: Exception ) of object;
  372. TRealICQRegFailedEvent = procedure(Sender: TObject; E: Exception ) of object;
  373. TRealICQSearchResultEvent = procedure(Sender: TObject; ARecordCount: Integer; APageCount: Integer; APageIndex: Integer; SearchResultRecords: array of TSearchResultRecord) of object;
  374. TRealICQAddFriendRequestEvent = procedure(Sender: TObject; ALoginName: String; ATag: String) of object;
  375. TRealICQAddFriendResponseEvent = procedure(Sender: TObject; ALoginName: String; ATag: String; AAcceptted: Boolean) of object;
  376. TRealICQHeadImageReadyEvent = procedure(Sender: TObject; RealICQUser: TRealICQUser) of object;
  377. TRealICQChangePasswordResultEvent = procedure(Sender: TObject; APassChanged: Boolean; ANewPassword: String) of object;
  378. TRealICQReConnectExecuteEvent = procedure(Sender: TObject; ASeconds: Integer) of object;
  379. TRealICQRemovedUserEvent = procedure(Sender: TObject; ALoginName: String) of object;
  380. TRealICQAddedBlacklistsEvent = procedure(Sender: TObject; ALoginName: String) of object;
  381. TRealICQGetWebTabsEvent = procedure(Sender: TObject; ATabCount: Integer; WebTabRecords: array of TWebTabRecord) of object;
  382. TRealICQDownloadFileEvent = procedure(Sender: TObject; AFileName: String) of object;
  383. TRealICQSendedMessageEvent = procedure(Sender: TObject; RealICQMessage: TRealICQMessage) of object;
  384. TRealICQReceivedMessageEvent = procedure(Sender: TObject; RealICQMessage: TRealICQMessage) of object;
  385. TRealICQSendMessageFailedEvent = procedure(Sender: TObject; RealICQMessage: TRealICQMessage) of object;
  386. TRealICQSendedSendFileRequestEvent = procedure(Sender: TObject; FileTransmitter: TObject) of object;
  387. TRealICQGettedSendFileRequestEvent = procedure(Sender: TObject; SendFileRequestInfo: TSendFileRequestInfo) of object;
  388. TRealICQCancelSendFileEvent = procedure(Sender: TObject; ALoginName: String; AOppositeID: Cardinal) of object;
  389. TRealICQPleaseSendFaceToMeEvent = procedure(Sender: TObject; ALoginName, AFaceMD5Code: String) of object;
  390. TRealICQInputtingEvent = procedure(Sender: TObject; ALoginName: String; AInputting: Boolean) of object;
  391. TRealICQSendedAudioTransmiteRequestEvent = procedure(Sender: TObject; ALoginName: String) of object;
  392. TRealICQGettedAudioTransmiteRequestEvent = procedure(Sender: TObject; ALoginName: String) of object;
  393. TRealICQGettedAudioTransmiteResponseEvent = procedure(Sender: TObject; ALoginName: String; AAcceptted: Boolean) of object;
  394. TRealICQGettedCancelAudioTransmiteEvent = procedure(Sender: TObject; ALoginName: String) of object;
  395. TRealICQGettedStopAudioTransmiteEvent = procedure(Sender: TObject; ALoginName: String; AIsStopper: Boolean) of object;
  396. TRealICQGettedAudioTransmiteConnecttedEvent = procedure(Sender: TObject; ALoginName: String) of object;
  397. TRealICQCalculatedWaveInVolumeEvent = procedure(Sender: TObject; ALoginName: String; AVolume: Integer) of object;
  398. TRealICQCalculatedWaveOutVolumeEvent = procedure(Sender: TObject; ALoginName: String; AVolume: Integer) of object;
  399. TRealICQSendedVideoTransmiteRequestEvent = procedure(Sender: TObject; ALoginName: String) of object;
  400. TRealICQGettedVideoTransmiteRequestEvent = procedure(Sender: TObject; ALoginName: String) of object;
  401. TRealICQGettedVideoTransmiteResponseEvent = procedure(Sender: TObject; ALoginName: String; AAcceptted: Boolean) of object;
  402. TRealICQGettedCancelVideoTransmiteEvent = procedure(Sender: TObject; ALoginName: String) of object;
  403. TRealICQGettedStopVideoTransmiteEvent = procedure(Sender: TObject; ALoginName: String; AIsStopper: Boolean) of object;
  404. TRealICQGettedVideoTransmiteConnecttedEvent = procedure(Sender: TObject; ALoginName: String; ASendBigBmp, ARecvBigBmp: Boolean) of object;
  405. TRealICQReceivedVideoImageEvent = procedure(Sender: TObject; ALoginName: String; ABitmap: TBitmap) of object;
  406. TRealICQCapturedVideoImageEvent = procedure(Sender: TObject; ALoginName: String; ABitmap: TBitmap) of object;
  407. TRealICQCreateTeamResultEvent = procedure(Sender: TObject; ATeamCaption: String; ACreated: Boolean; ATeamID: String; AFailingCause: String) of object;
  408. TRealICQTeamInfoReadyEvent = procedure(Sender: TObject; ARealICQTeam: TRealICQTeam) of object;
  409. TRealICQJoinedTeamEvent = procedure(Sender: TObject; ARealICQTeam: TRealICQTeam) of object;
  410. TRealICQTeamDisbandedEvent = procedure(Sender: TObject; ARealICQTeam: TRealICQTeam) of object;
  411. TRealICQTeamQuittedEvent = procedure(Sender: TObject; ARealICQTeam: TRealICQTeam; ALoginName: String) of object;
  412. TRealICQSearchTeamResultEvent = procedure(Sender: TObject; ARecordCount: Integer; APageCount: Integer; APageIndex: Integer; SearchTeamResultRecords: array of TSearchTeamResultRecord) of object;
  413. TRealICQJoinTeamRequestEvent = procedure(Sender: TObject; ARealICQTeam: TRealICQTeam; ALoginName: String; ATag: String) of object;
  414. TRealICQJoinTeamResponseEvent = procedure(Sender: TObject; ATeamID: String; ALoginName: String; ATag: String; AAcceptted: Boolean) of object;
  415. TRealICQSendedTeamMessageEvent = procedure(Sender: TObject; RealICQTeamMessage: TRealICQTeamMessage) of object;
  416. TRealICQReceivedTeamMessageEvent = procedure(Sender: TObject; RealICQTeamMessage: TRealICQTeamMessage) of object;
  417. TRealICQSendTeamMessageFailedEvent = procedure(Sender: TObject; RealICQTeamMessage: TRealICQTeamMessage) of object;
  418. TRealICQPleaseUploadTeamFaceEvent = procedure(Sender: TObject; MD5String: String; var FileName: String) of object;
  419. TRealICQDownloadTeamFaceEvent = procedure(Sender: TObject; AFileName: String) of object;
  420. TRealICQReceivedSystemMessageEvent = procedure(Sender: TObject; ASystemMessage: TRealICQSystemMessage) of object;
  421. TRealICQShakeWindowEvent = procedure(Sender: TObject; ALoginName: String) of object;
  422. TRealICQReceivedCustomMessageEvent = procedure(Sender: TObject; AContent: String) of object;
  423. TRealICQGetDBProcedureResultEvent = procedure(Sender: TObject; DBProcedureName, ArgIn, ArgOut: String) of object;
  424. TRealICQSMSResultEvent = procedure(Sender: TObject; AMessageID: Cardinal; AResult: Integer) of object;
  425. TRealICQReceivedSMSEvent = procedure(Sender: TObject; ASMSSender, ASMSContent: String; ASMSDateTime: TDateTime) of object;
  426. TRealICQReceivedOfflineAutoResponseSetEvent = procedure(Sender: TObject; AEnabled: Boolean; AText: String) of object;
  427. TRealICQReceivedServerListEvent = procedure(Sender: TObject; AServerList: String) of object;
  428. TRealICQReceivedOfflineFileEvent = procedure(Sender: TObject; ASender, AFileName: String; AFileSize: Int64; ASendDateTime: TDateTime) of object;
  429. TRealICQSendedRemoteControlTransmiteRequestEvent = procedure(Sender: TObject; ALoginName: String) of object;
  430. TRealICQGettedRemoteControlTransmiteRequestEvent = procedure(Sender: TObject; ALoginName: String) of object;
  431. TRealICQGettedRemoteControlTransmiteResponseEvent = procedure(Sender: TObject; ALoginName: String; AAcceptted: Boolean) of object;
  432. TRealICQGettedCancelRemoteControlTransmiteEvent = procedure(Sender: TObject; ALoginName: String) of object;
  433. TRealICQGettedStopRemoteControlTransmiteEvent = procedure(Sender: TObject; ALoginName: String; AIsStopper: Boolean) of object;
  434. TRealICQGettedRemoteControlTransmiteConnecttedEvent = procedure(Sender: TObject; ALoginName: String) of object;
  435. TRealICQGettedRemoteControlTransmiteScreenSizeEvent = procedure(Sender: TObject; ALoginName: String; AWidth, AHeight: Integer) of object;
  436. TRealICQGettedRemoteControlTransmiteScreenImageEvent = procedure(Sender: TObject; ALoginName: String; ALeft, ATop, AWidth, AHeight: Integer; AP: TPoint; ABitmap: TBitmap) of object;
  437. TRealICQGettedRemoteControlTransmiteCursorPosEvent = procedure(Sender: TObject; ALoginName: String; AP: TPoint) of object;
  438. TRealICQCancelControlRemoteControlTransmiteEvent = procedure(Sender: TObject; ALoginName: String) of object;
  439. TRealICQSendedRemoteControlTransmiteControlRequestEvent = procedure(Sender: TObject; ALoginName: String) of object;
  440. TRealICQGettedRemoteControlTransmiteControlRequestEvent = procedure(Sender: TObject; ALoginName: String) of object;
  441. TRealICQGettedRemoteControlTransmiteControlResponseEvent = procedure(Sender: TObject; ALoginName: String; AAcceptted: Boolean) of object;
  442. TRealICQGettedRemoteControlTransmiteBeControlResponseEvent = procedure(Sender: TObject; ALoginName: String; AAcceptted: Boolean) of object;
  443. TRealICQGettedSendFolderRequestEvent = procedure(Sender: TObject; AID, ACount: Cardinal; ALoginName: String; AFilesStream: TStream) of object;
  444. TRealICQCanceledSendFolderEvent = procedure(Sender: TObject; AID: Cardinal; ALoginName: String) of object;
  445. TRealICQGetNotReadMessageCountEvent = procedure(Sender: TObject; iCount: Integer) of object;
  446. TRealICQGetSystemNoticesCountEvent = procedure(Sender: TObject; iCount: Integer; NoticesRecords: array of TSystemNotices) of object;
  447. const
  448. ImageX2_DLL_PACH = 'binary\ImageX2.dll';
  449. IEContext_DLL_PACH = 'binary\IEContext.dll';
  450. AppCentreCom_DLL_PACH = 'binary\AppCentreCom.dll';
  451. implementation
  452. uses
  453. RealICQClient, MD5;
  454. { TWebTabRecord }
  455. function TWebTabRecord.GetIconFile: String;
  456. var
  457. FilePath,
  458. AFileName: String;
  459. begin
  460. FilePath := TRealICQClient.GetDownloadFileDir;
  461. AFileName := FilePath + Icon;
  462. Result := AFileName;
  463. end;
  464. {TRealICQUser}
  465. function TRealICQUser.GetRealICQPtoPBox: TObject;
  466. begin
  467. if FRealICQPtoPBox = nil then
  468. begin
  469. FRealICQPtoPBox := TRealICQPtoPBox.Create(LoginName, FRealICQClient as TRealICQClient, True, True);
  470. end;
  471. Result := FRealICQPtoPBox;
  472. end;
  473. function TRealICQUser.IsNeedRequestUserStatus: Boolean;
  474. begin
  475. Result := (LastReflashLoginStatus = 0) or
  476. ((GetTickCount - LastReflashLoginStatus) > 180000);
  477. if Result then
  478. LastReflashLoginStatus := GetTickCount;
  479. end;
  480. function TRealICQUser.GetAddress: String;
  481. begin
  482. if (LoginState <> stOffline) and (LoginState <> stHidden) then
  483. Result := Address
  484. else
  485. Result := '';
  486. end;
  487. function TRealICQUser.GetPort: Word;
  488. begin
  489. if (LoginState <> stOffline) and (LoginState <> stHidden) then
  490. Result := FPort
  491. else
  492. Result := 0;
  493. end;
  494. procedure TRealICQUser.ClickedSNSIcon;
  495. begin
  496. FClickedSNS := True;
  497. // FLastClickSNSUpdateTime := FSNSUpdateTime;
  498. // (FRealICQClient as TRealICQClient).SaveLastSNSUpdateTime(Self);
  499. end;
  500. function TRealICQUser.GetHasNewSNSUpdate: Boolean;
  501. begin
  502. Result := False;
  503. if FClickedSNS then Exit;
  504. //Dialogs.ShowMessage(Self.FLoginName + ' ' + FloatToStr(FLastClickSNSUpdateTime) + ' ' + FloatToStr(FSNSUpdateTime));
  505. // if FLastClickSNSUpdateTime >= FSNSUpdateTime then Exit;
  506. // Result := FSNSUpdateTime >= Now - 3;
  507. //Dialogs.ShowMessage(Format('', [FSNSUpdateTime - 3]));
  508. end;
  509. function TRealICQUser.GetHeadImageFile: String;
  510. var
  511. FilePath,
  512. FileName: String;
  513. MD5HashValue: MD5Digest;
  514. MD5HashString: String;
  515. begin
  516. Result := '';
  517. if HeadImageHashValue = '' then
  518. Exit;
  519. FilePath := TRealICQClient.GetHeadImageDir;
  520. FileName := FilePath + HeadImageHashValue;
  521. case HeadImageFileType of
  522. htJPG: Result := FileName + '.JPG';
  523. htGIF: Result := FileName + '.GIF';
  524. htBMP: Result := FileName + '.BMP';
  525. end;
  526. if FileExists(Result) then
  527. begin
  528. MD5HashValue := MD5File(Result);
  529. MD5HashString := MD5.MD5Print(MD5HashValue);
  530. if not AnsiSameText(MD5HashString, HeadImageHashValue) then
  531. begin
  532. try
  533. DeleteFile(Result);
  534. except
  535. end;
  536. end;
  537. end;
  538. end;
  539. //------------------------------------------------------------------------------
  540. constructor TRealICQUser.Create(ALoginName: String; ARealICQClient: TObject);
  541. begin
  542. inherited Create;
  543. LoginName := ALoginName;
  544. FRealICQClient := ARealICQClient;
  545. Sex := seUnknown;
  546. LoginState := stOffline;
  547. HeadImageFileType := htNONE;
  548. Secret := slOnlyFriendCanSee;
  549. CurrentExInfoVersion := -1;
  550. SNSUpdateTime := 2;
  551. end;
  552. destructor TRealICQUser.Destroy;
  553. begin
  554. if FRealICQPtoPBox <> nil then
  555. FreeAndNil(FRealICQPtoPBox);
  556. inherited;
  557. end;
  558. { TSendFileRequestInfo }
  559. constructor TSendFileRequestInfo.Create(ALoginName: string; AObjective: TFileTransmitterObjective;
  560. AOppositeID: Cardinal; AFileLength: Int64; AFileName, AMD5Code,
  561. AFileExtImage: string);
  562. begin
  563. FLoginName := ALoginName;
  564. FObjective := AObjective;
  565. FOppositeID := AOppositeID;
  566. FFileLength := AFileLength;
  567. FFileName := AFileName;
  568. FMD5Code := AMD5Code;
  569. FFileExtImage := AFileExtImage;
  570. end;
  571. { TRealICQMessage }
  572. constructor TRealICQMessage.Create(ASender,
  573. AReceiver,
  574. AFontStr, AMessageStr: String;AIsEncryMessage:Boolean);
  575. begin
  576. inherited Create;
  577. FIsEncryMessage:=AIsEncryMessage;
  578. FSender := ASender;
  579. FReceiver := AReceiver;
  580. FFontStr := AFontStr;
  581. FMessageStr := AMessageStr;
  582. end;
  583. { TRealICQTeamMessage }
  584. constructor TRealICQTeamMessage.Create(ATeamID: String;
  585. ASender,
  586. AFontStr,
  587. AMessageStr: String;IsEncry:Boolean);
  588. begin
  589. inherited Create;
  590. FTeamID := ATeamID;
  591. FSender := ASender;
  592. FFontStr := AFontStr;
  593. FMessageStr := AMessageStr;
  594. FIsEncryMessage:=IsEncry;
  595. end;
  596. function TRealICQBranchInfo.Clone: TRealICQBranchInfo;
  597. begin
  598. Result := TRealICQBranchInfo.Create;
  599. Result.ID := ID;
  600. Result.ParentID := ParentID;
  601. Result.BranchName := BranchName;
  602. Result.OnlineEmployee := OnlineEmployee;
  603. Result.EmployeeCount := EmployeeCount;
  604. Result.IsGetUserList := IsGetUserList;
  605. end;
  606. { TRealICQTeam }
  607. function TRealICQTeam.Clone: TRealICQTeam;
  608. begin
  609. Result := TRealICQTeam.Create;
  610. Result.TeamID := TeamID;
  611. Result.TeamCaption := TeamCaption;
  612. Result.TeamCreater := TeamCreater;
  613. Result.TeamCallBoard := TeamCallBoard;
  614. Result.TeamIntro := TeamIntro;
  615. Result.TeamValidate := TeamValidate;
  616. Result.TeamManagers := TeamManagers;
  617. Result.TeamMembers := TeamMembers;
  618. Result.IsTempTeam := IsTempTeam;
  619. end;
  620. {TFace}
  621. //------------------------------------------------------------------------------
  622. procedure TFace.SetFileName(Value: String);
  623. begin
  624. FFileName := Value;
  625. end;
  626. //------------------------------------------------------------------------------
  627. procedure TFace.Assign(AFace: TFace);
  628. begin
  629. FName := AFace.FName;
  630. FShortCut := AFace.FShortCut;
  631. FFileName := AFace.FFileName;
  632. end;
  633. //------------------------------------------------------------------------------
  634. constructor TFace.Create(AFileName, AShortCut, AName, AMD5Code: String; ACategory: String);
  635. begin
  636. FFileName := AFileName;
  637. FShortCut := AShortCut;
  638. FName := AName;
  639. FMD5Code := AMD5Code;
  640. FCategory := ACategory;
  641. end;
  642. end.