TeamsAdapter.pas 17 KB

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