TeamsAdapter.pas 19 KB

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