TeamsAdapter.pas 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626
  1. unit TeamsAdapter;
  2. interface
  3. uses
  4. StrUtils, Classes, SysUtils, Groups, Graphics, RealICQClient, DownloadFileFromWeb,
  5. RealICQModel;
  6. type
  7. TTeamsAdapter = class
  8. private
  9. class procedure NewUpdateTeamMembers(ATeamID: String; AOldMembers, ANewMembers: TStringList);
  10. class procedure OldUpdateTeamMembers(ATeamID: String; AOldMembers, ANewMembers: TStringList);
  11. public
  12. class procedure Start(ACurrentLoginName: string);
  13. class procedure Stop;
  14. class procedure UpdateTeamMembers(ATeamID: String; AOldMembers, ANewMembers: TStringList);
  15. class procedure AddTeamMembers(ATeamID: String; AAddMembers: TStringList);
  16. class procedure UpdateTeamInfo(ATeamID, AIntro, ANotice, AName: string; AAuth: Integer);
  17. class procedure HandOverTeam(ATeamID, ALoginName: string); static;
  18. class procedure SendTeamMessage(ATeamID, ASender, AMsg: string; AFont: TFont; AFaces: TStringList; Attachs: String);
  19. class function RemoveManager(ATeamID, ALoginName: string): Boolean;
  20. class function AddManager(ATeamID, ALoginName: string): Boolean;
  21. class procedure Subscribe;
  22. class procedure UnSubscribe;
  23. class function IsTeamManager(ATeamID, ALoginName: string): Boolean;
  24. class function IsTeamCreater(ATeamID, ALoginName: string): Boolean;
  25. class procedure SearchTeam(AKey: string; ASearchType: TRealICQTeamSearchType; AMatchingType: TRealICQMatchingType; APage: Integer);
  26. class procedure QuitTeam(ATeamID: String);
  27. class procedure DisbandTeam(ATeamID: String);
  28. class procedure JoinTeam(ATeamID, ATag: string);
  29. class procedure JoinTeamResponse(ATeamID, ALoginName, ATag: string; Accepted: Boolean);
  30. class procedure SetAlias(ATeamID, ALoginName, Alias: String);
  31. class function GetAlias(ATeamID, ALoginName: string): string;
  32. class function GetTeam(ATeamID: string): TRealICQTeam;
  33. class function GetTeams: TStringList;
  34. class procedure CreateTeam(ATeamName, ATeamCallBoard, ATeamIntro: String;
  35. ATeamMembers: TStringList; AIsTempTeam: Boolean; ATeamValidateType: TRealICQTeamValidateType);
  36. class procedure MessageMiscMust(ATeamID: string);
  37. end;
  38. implementation
  39. uses
  40. MainFrm, Windows, xFonts, Dialogs, GroupConfig, GroupService, RealICQUtils,
  41. BaseService;
  42. {$DEFINE GroupV3.2+}
  43. { TTeamsAdapter }
  44. class procedure TTeamsAdapter.DisbandTeam(ATeamID: String);
  45. begin
  46. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  47. begin
  48. {$IFDEF GroupV3.2+}
  49. TGroupService.GetService.DisbandTeam(ATeamID);
  50. {$ELSE}
  51. if Group = nil then
  52. Exit;
  53. Group.RemoveTeam(ATeamID)
  54. {$ENDIF}
  55. end
  56. else
  57. MainForm.RealICQClient.DisbandTeam(ATeamID);
  58. end;
  59. class procedure TTeamsAdapter.QuitTeam(ATeamID: String);
  60. begin
  61. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  62. begin
  63. {$IFDEF GroupV3.2+}
  64. TGroupService.GetService.QuitTeam(ATeamID);
  65. {$ELSE}
  66. if Group = nil then
  67. Exit;
  68. Group.Leave(ATeamID)
  69. {$ENDIF}
  70. end
  71. else
  72. MainForm.RealICQClient.QuitTeam(ATeamID);
  73. end;
  74. class procedure TTeamsAdapter.AddTeamMembers(ATeamID: String;
  75. AAddMembers: TStringList);
  76. begin
  77. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  78. begin
  79. {$IFDEF GroupV3.2+}
  80. TGroupService.GetService.AddTeamMembers(ATeamID, AAddMembers);
  81. {$ELSE}
  82. if Group = nil then
  83. Exit;
  84. Group.AddTeamMembers(ATeamID, AAddMembers);
  85. {$ENDIF}
  86. end
  87. else
  88. MainForm.RealICQClient.ModifyTeamMembers(ATeamID, AAddMembers);
  89. end;
  90. class function TTeamsAdapter.IsTeamCreater(ATeamID, ALoginName: string): Boolean;
  91. begin
  92. Result := False;
  93. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  94. begin
  95. Result := TGroupService.GetService.IsTeamCreater(ATeamID, ALoginName);
  96. end;
  97. end;
  98. class procedure TTeamsAdapter.HandOverTeam(ATeamID, ALoginName: string);
  99. begin
  100. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  101. TGroupService.GetService.HandOverTeam(ATeamID, ALoginName)
  102. else
  103. ShowMessage('集成版群组不支持该功能');
  104. end;
  105. class function TTeamsAdapter.IsTeamManager(ATeamID, ALoginName: string): Boolean;
  106. var
  107. iIndex: Integer;
  108. RealICQTeam: TRealICQTeam;
  109. Team: TRealICQTeam;
  110. begin
  111. Result := False;
  112. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  113. begin
  114. {$IFDEF GroupV3.2+}
  115. Result := TGroupService.GetService.IsTeamManager(ATeamID, ALoginName);
  116. {$ELSE}
  117. if Group = nil then
  118. Exit;
  119. iIndex := group.Teams.IndexOf(ATeamID);
  120. RealICQTeam := group.Teams.Objects[iIndex] as TRealICQTeam;
  121. if (AnsiPos(Chr(10) + ALoginName + Chr(10), Chr(10) + RealICQTeam.TeamManagers + Chr(10)) > 0) or
  122. (AnsiSameText(ALoginName, RealICQTeam.TeamCreater)) then
  123. Result := True
  124. else
  125. Result := False;
  126. {$ENDIF}
  127. end
  128. else
  129. begin
  130. iIndex := MainForm.RealICQClient.Teams.IndexOf(ATeamID);
  131. if iIndex = -1 then Exit;
  132. Team := MainForm.RealICQClient.Teams.Objects[iIndex] as TRealICQTeam;
  133. if (AnsiPos(Chr(10) + ALoginName + Chr(10), Chr(10) + Team.TeamManagers + Chr(10)) <= 0) then
  134. Result := False
  135. else
  136. Result := True;
  137. end;
  138. end;
  139. class procedure TTeamsAdapter.JoinTeam(ATeamID, ATag: string);
  140. begin
  141. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  142. begin
  143. {$IFDEF GroupV3.2+}
  144. TGroupService.GetService.JoinTeam(ATeamID, ATag);
  145. {$ELSE}
  146. if Group = nil then
  147. Exit;
  148. Group.JoinTeam(ATeamID, ATag)
  149. {$ENDIF}
  150. end
  151. else
  152. MainForm.RealICQClient.JoinTeam(ATeamID, ATag);
  153. end;
  154. class procedure TTeamsAdapter.JoinTeamResponse(ATeamID, ALoginName, ATag: string; Accepted: Boolean);
  155. var
  156. ret: Integer;
  157. begin
  158. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  159. begin
  160. {$IFDEF GroupV3.2+}
  161. TGroupService.GetService.JoinTeamResponse(ATeamID, ALoginName, ATag, Accepted);
  162. {$ELSE}
  163. if Group = nil then
  164. Exit;
  165. if Accepted then
  166. ret := 0
  167. else
  168. ret := 1;
  169. Group.JoinTeamResponse(ATeamID, ALoginName, ATag, ret);
  170. {$ENDIF}
  171. end
  172. else
  173. MainForm.RealICQClient.JoinTeamResponse(ATeamID, ALoginName, ATag, Accepted);
  174. end;
  175. class procedure TTeamsAdapter.MessageMiscMust(ATeamID: string);
  176. begin
  177. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  178. TGroupService.GetService.MessageMiscMust(ATeamID);
  179. end;
  180. class procedure TTeamsAdapter.NewUpdateTeamMembers(ATeamID: String; AOldMembers,
  181. ANewMembers: TStringList);
  182. var
  183. iLoop: Integer;
  184. ATeamAddMembers,
  185. ATeamRemoveMembers: TStringList;
  186. MemberListChanged: Boolean;
  187. begin
  188. ATeamAddMembers := TStringList.Create;
  189. ATeamRemoveMembers := TStringList.Create;
  190. MemberListChanged := False;
  191. for iLoop := 0 to ANewMembers.Count - 1 do
  192. begin
  193. if AOldMembers.IndexOf(ANewMembers[iLoop]) = -1 then
  194. begin
  195. MemberListChanged := True;
  196. ATeamAddMembers.Add(ANewMembers[iLoop]);
  197. end;
  198. end;
  199. if MemberListChanged then
  200. Group.AddTeamMembers(ATeamID,ATeamAddMembers);
  201. MemberListChanged := False;
  202. for iLoop := 0 to AOldMembers.Count - 1 do
  203. begin
  204. if Length(Trim(AOldMembers[iLoop])) = 0 then Continue;
  205. if ANewMembers.IndexOf(AOldMembers[iLoop]) = -1 then
  206. begin
  207. MemberListChanged := True;
  208. ATeamRemoveMembers.Add(AOldMembers[iLoop]);
  209. end;
  210. end;
  211. if MemberListChanged then
  212. Group.RemoveTeamMembers(ATeamID,ATeamRemoveMembers);
  213. ATeamAddMembers.Free;
  214. ATeamRemoveMembers.Free;
  215. end;
  216. class procedure TTeamsAdapter.OldUpdateTeamMembers(ATeamID: String; AOldMembers,
  217. ANewMembers: TStringList);
  218. var
  219. iLoop: Integer;
  220. MemberListChanged: Boolean;
  221. MembersStr: string;
  222. begin
  223. MemberListChanged := AOldMembers.Count <> ANewMembers.Count;
  224. if not MemberListChanged then
  225. for iLoop := 0 to ANewMembers.Count - 1 do
  226. begin
  227. if AOldMembers.IndexOf(ANewMembers[iLoop]) = -1 then
  228. begin
  229. MemberListChanged := True;
  230. Break;
  231. end;
  232. end;
  233. if not MemberListChanged then
  234. for iLoop := 0 to AOldMembers.Count - 1 do
  235. begin
  236. if Length(Trim(AOldMembers[iLoop])) = 0 then Continue;
  237. if ANewMembers.IndexOf(AOldMembers[iLoop]) = -1 then
  238. begin
  239. MemberListChanged := True;
  240. Break;
  241. end;
  242. end;
  243. if MemberListChanged then
  244. MainForm.RealICQClient.ModifyTeamMembers(ATeamID, ANewMembers);
  245. end;
  246. class function TTeamsAdapter.RemoveManager(ATeamID, ALoginName: string): Boolean;
  247. var
  248. ATeam: TRealICQTeam;
  249. iIndex, iLoop: Integer;
  250. ANewManagers: string;
  251. ANewManagerList: TStringList;
  252. begin
  253. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  254. begin
  255. {$IFDEF GroupV3.2+}
  256. TGroupService.GetService.RemoveManager(ATeamID, ALoginName);
  257. {$ELSE}
  258. if Group = nil then
  259. Exit;
  260. Group.RemoveManager(ATeamID, ALoginName);
  261. {$ENDIF}
  262. end
  263. else
  264. begin
  265. iIndex := MainForm.RealICQClient.Teams.IndexOf(ATeamID);
  266. if iIndex < 0 then
  267. Exit;
  268. ATeam := MainForm.RealICQClient.Teams.Objects[iIndex] as TRealICQTeam;
  269. if ATeam.TeamManagers = '' then
  270. Exit;
  271. ANewManagerList := SplitString(ATeam.TeamManagers, Chr(10));
  272. try
  273. iLoop := 0;
  274. while iLoop < ANewManagerList.Count do
  275. begin
  276. if ANewManagerList[iLoop] = '' then
  277. ANewManagerList.Delete(iLoop);
  278. Inc(iLoop);
  279. end;
  280. ALoginName := TBaseService.FullLoginName(MainForm.RealICQClient.CenterServerID, MainForm.RealICQClient.ServerID, ALoginName);
  281. for iLoop := 0 to ANewManagerList.Count - 1 do
  282. if SameText(TBaseService.FullLoginName(MainForm.RealICQClient.CenterServerID, MainForm.RealICQClient.ServerID, ANewManagerList[iLoop]), ALoginName) then
  283. begin
  284. ANewManagerList.Delete(iLoop);
  285. MainForm.RealICQClient.ModifyTeamManagers(ATeam.TeamID, ANewManagerList);
  286. Break;
  287. end;
  288. finally
  289. FreeAndNil(ANewManagerList);
  290. end;
  291. end;
  292. end;
  293. class function TTeamsAdapter.AddManager(ATeamID, ALoginName: string): Boolean;
  294. var
  295. ATeam: TRealICQTeam;
  296. iIndex, iLoop: Integer;
  297. ANewManagers: string;
  298. ANewManagerList: TStringList;
  299. begin
  300. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  301. begin
  302. {$IFDEF GroupV3.2+}
  303. TGroupService.GetService.AddManager(ATeamID, ALoginName);
  304. {$ELSE}
  305. if Group = nil then
  306. Exit;
  307. Group.AddManager(ATeamID, ALoginName);
  308. {$ENDIF}
  309. end
  310. else
  311. begin
  312. iIndex := MainForm.RealICQClient.Teams.IndexOf(ATeamID);
  313. if iIndex < 0 then
  314. Exit;
  315. ATeam := MainForm.RealICQClient.Teams.Objects[iIndex] as TRealICQTeam;
  316. if ATeam.TeamManagers = '' then
  317. ANewManagerList := TStringList.Create
  318. else
  319. ANewManagerList := SplitString(ATeam.TeamManagers, Chr(10));
  320. try
  321. iLoop := 0;
  322. while iLoop < ANewManagerList.Count do
  323. begin
  324. if ANewManagerList[iLoop] = '' then
  325. ANewManagerList.Delete(iLoop);
  326. Inc(iLoop);
  327. end;
  328. ALoginName := TBaseService.FullLoginName(MainForm.RealICQClient.CenterServerID, MainForm.RealICQClient.ServerID, ALoginName);
  329. for iLoop := 0 to ANewManagerList.Count - 1 do
  330. if SameText(TBaseService.FullLoginName(MainForm.RealICQClient.CenterServerID, MainForm.RealICQClient.ServerID, ANewManagerList[iLoop]), ALoginName) then
  331. begin
  332. ANewManagerList.Delete(iLoop);
  333. FreeAndNil(ANewManagerList);
  334. Exit;
  335. end;
  336. ANewManagerList.Add(ALoginName);
  337. MainForm.RealICQClient.ModifyTeamManagers(ATeam.TeamID, ANewManagerList);
  338. finally
  339. FreeAndNil(ANewManagerList);
  340. end;
  341. end;
  342. end;
  343. class procedure TTeamsAdapter.UpdateTeamMembers(ATeamID: String; AOldMembers,
  344. ANewMembers: TStringList);
  345. begin
  346. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  347. begin
  348. {$IFDEF GroupV3.2+}
  349. TGroupService.GetService.UpdateTeamMembers(ATeamID, AOldMembers, ANewMembers);
  350. {$ELSE}
  351. if Group = nil then
  352. Exit;
  353. NewUpdateTeamMembers(ATeamID, AOldMembers, ANewMembers)
  354. {$ENDIF}
  355. end
  356. else
  357. OldUpdateTeamMembers(ATeamID, AOldMembers, ANewMembers)
  358. end;
  359. class procedure TTeamsAdapter.UnSubscribe;
  360. begin
  361. if (TGroupConfig.GetConfig.GroupVersion = gvIndependent) and (Group <> nil) then
  362. begin
  363. {$IFDEF GroupV3.2+}
  364. TGroupService.GetService.Uninstall;
  365. {$ELSE}
  366. if Group = nil then
  367. Exit;
  368. Group.UnSubscribe;
  369. {$ENDIF}
  370. end;
  371. end;
  372. class procedure TTeamsAdapter.UpdateTeamInfo(ATeamID, AIntro, ANotice, AName: string; AAuth: Integer);
  373. begin
  374. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  375. begin
  376. {$IFDEF GroupV3.2+}
  377. if AAuth = 2 then
  378. AAuth := 4;
  379. TGroupService.GetService.UpdateTeam(ATeamID, AIntro, ANotice, AName, AAuth);
  380. {$ELSE}
  381. if Group = nil then
  382. Exit;
  383. if AAuth = 2 then
  384. AAuth := 4;
  385. Group.UpdateTeamInfo(ATeamID, AIntro, ANotice, AName, AAuth);
  386. {$ENDIF}
  387. end
  388. else
  389. MainForm.RealICQClient.ModifyTeamBaseInfo(ATeamID, AName, ANotice, AName, TRealICQTeamValidateType(AAuth));
  390. end;
  391. class procedure TTeamsAdapter.SearchTeam(AKey: string; ASearchType: TRealICQTeamSearchType; AMatchingType: TRealICQMatchingType;
  392. APage: Integer);
  393. begin
  394. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  395. begin
  396. {$IFDEF GroupV3.2+}
  397. TGroupService.GetService.SearchTeam(AKey, ASearchType, AMatchingType, APage);
  398. {$ELSE}
  399. if Group = nil then
  400. Exit;
  401. Group.Search(AKey, '', '', '');
  402. {$ENDIF}
  403. end
  404. else
  405. MainForm.RealICQClient.SearchTeam(ASearchType, AKey, AMatchingType, APage);
  406. end;
  407. class procedure TTeamsAdapter.SendTeamMessage(ATeamID, ASender, AMsg: string; AFont: TFont; AFaces: TStringList; Attachs: String);
  408. var
  409. RealICQTeamMessage: TRealICQTeamMessage;
  410. aDateTime: TDateTime;
  411. AFontStr: string;
  412. begin
  413. AFontStr := FontToString(AFont);
  414. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  415. begin
  416. {$IFDEF GroupV3.2+}
  417. TGroupService.GetService.SendTeamMessage(ATeamID, ASender, AMsg, AFont, AFaces, Attachs);
  418. RealICQTeamMessage:= TRealICQTeamMessage.Create(ATeamID,ASender,AFontStr,AMsg,False);
  419. RealICQTeamMessage.MessageID := GetTickCount();
  420. RealICQTeamMessage.SendDateTime := Now();
  421. // TGroupService.GetService.MessageMiscMust(ATeamID);
  422. MainForm.ShowRealICQTeamMessage(RealICQTeamMessage, False);
  423. {$ELSE}
  424. if Group = nil then
  425. Exit;
  426. Group.SendTeamMessage(ATeamID, ASender, AMsg, AFont, AFaces, Attachs);
  427. RealICQTeamMessage:= TRealICQTeamMessage.Create(ATeamID,ASender,AFontStr,AMsg,False);
  428. RealICQTeamMessage.MessageID := GetTickCount();
  429. RealICQTeamMessage.SendDateTime := Now();
  430. MainForm.ShowRealICQTeamMessage(RealICQTeamMessage, False);
  431. {$ENDIF}
  432. end
  433. else
  434. begin
  435. MainForm.RealICQClient.SendTeamMessage(False, ATeamID, AFontStr, AMsg);
  436. end;
  437. end;
  438. class procedure TTeamsAdapter.SetAlias(ATeamID, ALoginName, Alias: String);
  439. begin
  440. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  441. begin
  442. {$IFDEF GroupV3.2+}
  443. TGroupService.GetService.SetAlias(ATeamID, ALoginName, Alias);
  444. {$ELSE}
  445. if Group = nil then
  446. Exit;
  447. Group.SetAlias(ATeamID, ALoginName, Alias)
  448. {$ENDIF}
  449. end
  450. else
  451. Dialogs.ShowMessage('集成群组版本不支持群成员别名!');
  452. end;
  453. class procedure TTeamsAdapter.Start(ACurrentLoginName: string);
  454. var
  455. AConfig: TGroupConfig;
  456. begin
  457. AConfig := TGroupConfig.Load;
  458. if AConfig.GroupVersion = gvIndependent then
  459. begin
  460. {$IFDEF GroupV3.2+}
  461. TGroupService.GetService.Init(ACurrentLoginName);
  462. {$ELSE}
  463. if ACurrentLoginName = '' then
  464. Exit;
  465. if Group <> nil then
  466. begin
  467. Group.Close;
  468. FreeAndNil(Group);
  469. end;
  470. Group := TGroup.Create;
  471. Group.IP := AConfig.IP;
  472. Group.Port := AConfig.Port;
  473. Group.ImageIP := AConfig.ImageIP;
  474. Group.ImagePort := AConfig.ImagePort;
  475. Group.LoginName := ACurrentLoginName;
  476. Group.Start;
  477. {$ENDIF}
  478. end
  479. else
  480. MainForm.RealICQClient.SendGetTeamList;
  481. end;
  482. class procedure TTeamsAdapter.Stop;
  483. var
  484. AConfig: TGroupConfig;
  485. begin
  486. AConfig := TGroupConfig.GetConfig;
  487. if AConfig <> nil then
  488. begin
  489. if AConfig.GroupVersion = gvIndependent then
  490. begin
  491. {$IFDEF GroupV3.2+}
  492. TGroupService.GetService.Uninstall;
  493. {$ELSE}
  494. if Group <> nil then
  495. begin
  496. Group.UnSubscribe;
  497. Group.Close;
  498. FreeAndNil(Group);
  499. end;
  500. {$ENDIF}
  501. end;
  502. end;
  503. end;
  504. class function TTeamsAdapter.GetAlias(ATeamID, ALoginName: string): string;
  505. begin
  506. Result := '';
  507. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  508. begin
  509. {$IFDEF GroupV3.2+}
  510. TGroupService.GetService.GetAlias(ATeamID, ALoginName);
  511. {$ELSE}
  512. if Group = nil then
  513. Exit;
  514. Result := Group.GetAlias(ATeamID, ALoginName)
  515. {$ENDIF}
  516. end;
  517. end;
  518. class function TTeamsAdapter.GetTeam(ATeamID: string): TRealICQTeam;
  519. var
  520. iIndex: Integer;
  521. begin
  522. Result := nil;
  523. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  524. begin
  525. {$IFDEF GroupV3.2+}
  526. Result := TGroupService.GetService.GetTeam(ATeamID);
  527. {$ELSE}
  528. if Group = nil then
  529. Exit;
  530. iIndex := Group.Teams.IndexOf(ATeamID);
  531. if iIndex >= 0 then
  532. Result := Group.Teams.Objects[iIndex] as TRealICQTeam;
  533. {$ENDIF}
  534. end
  535. else
  536. begin
  537. iIndex := MainForm.RealICQClient.Teams.IndexOf(ATeamID);
  538. if iIndex >= 0 then
  539. Result := MainForm.RealICQClient.Teams.Objects[iIndex] as TRealICQTeam;
  540. end;
  541. end;
  542. class function TTeamsAdapter.GetTeams: TStringList;
  543. begin
  544. Result := nil;
  545. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  546. begin
  547. {$IFDEF GroupV3.2+}
  548. Result := TGroupService.GetService.GetTeams;
  549. {$ELSE}
  550. if Group = nil then
  551. Exit;
  552. Result := Group.Teams;
  553. {$ENDIF}
  554. end
  555. else
  556. Result := MainForm.RealICQClient.Teams;
  557. end;
  558. class procedure TTeamsAdapter.CreateTeam(ATeamName, ATeamCallBoard, ATeamIntro: String;
  559. ATeamMembers: TStringList; AIsTempTeam: Boolean; ATeamValidateType: TRealICQTeamValidateType);
  560. begin
  561. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  562. begin
  563. {$IFDEF GroupV3.2+}
  564. TGroupService.GetService.CreateTeam(ATeamName, ATeamCallBoard, ATeamIntro, ATeamMembers, AIsTempTeam, ATeamValidateType);
  565. {$ELSE}
  566. if Group = nil then
  567. Exit;
  568. Group.CreateTeam(ATeamName, ATeamCallBoard, ATeamIntro, ATeamMembers, AIsTempTeam);
  569. {$ENDIF}
  570. end
  571. else
  572. MainForm.RealICQClient.CreateTeam(ATeamName, ATeamCallBoard, ATeamIntro, ATeamMembers, AIsTempTeam, ATeamValidateType);
  573. end;
  574. class procedure TTeamsAdapter.Subscribe;
  575. begin
  576. if TGroupConfig.GetConfig.GroupVersion = gvIndependent then
  577. begin
  578. {$IFDEF GroupV3.2+}
  579. {$ELSE}
  580. if Group = nil then
  581. Exit;
  582. Group.Subscribe;
  583. {$ENDIF}
  584. end;
  585. end;
  586. end.