TalkFormFactory.pas 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. unit TalkFormFactory;
  2. interface
  3. uses
  4. UITalkTeamForm, UITalkPersonalForm, UITalkFormBase, SysUtils, Classes, RealICQUtility,
  5. InterfaceUI, mybean.core.objects;
  6. type
  7. TTalkFormFactory = class(TMyBeanInterfacedObject, ITalkFormFactory)
  8. private
  9. FTalkForms: TInterfaceList;
  10. function CreateTalkPersonalForm(AReceiver: string): IUITalkForm;
  11. function CreateTalkTeamForm(ATeamID: string): IUITalkForm;
  12. public
  13. constructor Create; override;
  14. destructor Destroy; override;
  15. function GetTalkForm(AFormID: string; ACategory: TTalkingCategory): IUITalkForm;
  16. end;
  17. implementation
  18. uses
  19. Forms;
  20. { TTalkFormFactory }
  21. function TTalkFormFactory.GetTalkForm(AFormID: string;
  22. ACategory: TTalkingCategory): IUITalkForm;
  23. var
  24. i: Integer;
  25. begin
  26. for i := 0 to FTalkForms.Count - 1 do
  27. if SameText((FTalkForms.Items[i] as IUITalkForm).GetFormID, AFormID) then
  28. begin
  29. Result := (FTalkForms.Items[i] as IUITalkForm);
  30. Exit;
  31. end;
  32. case ACategory of
  33. tcNormal:
  34. begin
  35. Result := CreateTalkPersonalForm(AFormID);
  36. end;
  37. tcTeam:
  38. begin
  39. Result := CreateTalkTeamForm(AFormID);
  40. end;
  41. end;
  42. FTalkForms.Add(Result);
  43. end;
  44. function TTalkFormFactory.CreateTalkPersonalForm(
  45. AReceiver: string): IUITalkForm;
  46. var
  47. AForm: TUITalkPersonalForm;
  48. begin
  49. AForm := TUITalkPersonalForm.Create(nil, AReceiver);
  50. AForm.ChangeUIColor($EADEBA);
  51. Result := AForm;
  52. end;
  53. function TTalkFormFactory.CreateTalkTeamForm(ATeamID: string): IUITalkForm;
  54. var
  55. AForm: TUITalkTeamForm;
  56. begin
  57. AForm := TUITalkTeamForm.Create(nil, ATeamID);
  58. AForm.ChangeUIColor($EADEBA);
  59. Result := AForm;
  60. end;
  61. constructor TTalkFormFactory.Create;
  62. begin
  63. FTalkForms := TInterfaceList.Create;
  64. end;
  65. destructor TTalkFormFactory.Destroy;
  66. begin
  67. FTalkForms := nil;
  68. inherited;
  69. end;
  70. end.