📄 umeetingcenter.pas.bak
字号:
unit uMeetingCenter;
interface
uses DjBase,Tc08a32,DjSSCx;
type
TDjMeetingCenter = class(TObject)
private
MeetingList:TMeetingList;
IsRun :boolean;
FDjSSC:TDjSSCx;
MeetCount:integer;
function GetFreeMeetRes:PMeeting ;
procedure UseMeeting(Meeting:PMeeting);
procedure FreeMeeting(Meeting:PMeeting);
protected
public
constructor Create(DjSSC :TDjSSCx);
destructor destroy;overload;
function StartMeet(Channel: pChannel): PMeeting;
procedure StopMeet(MeetingID:integer);overload;
procedure StopMeet(Channel:PChannel);overload;
function AddChannel(Meeting:PMeeting;Channel:PChannel):integer;
function DeleteChannel(Channel:PChannel):integer;
function GetMeetCount:integer;
function GetIdleMeetCount:integer;
function GetThreeChannel(Meeting:pMeeting;Channel1,Channel2:PChannel):PChannel ;overload;
function GetThreeChannel(Meeting:PMeeting;Channel1:PChannel):PChannel;overload;
end;
var
DjMC :TDjMeetingCenter;
implementation
{ TMeetingCenter }
{-------------------------------------------------------------------------------
过程名: TDjMeetingCenter.AddChannel
作者: 姜亦文
日期: 2006.09.14
参数: Channel: PChannel
将一个通道加入会议中
返回值: integer
-------------------------------------------------------------------------------}
function TDjMeetingCenter.AddChannel(Meeting:PMeeting;Channel: PChannel): integer;
var
i:integer;
begin
i := DConf_GetResNumber;
if i >0 then
begin
if Meeting.ChannelList.Count < 6 then
begin
Result := AddChnl(Meeting.MeetingID,Channel.ChannelID,-6,0);
if Result = 0 then
begin
if not Meeting.IsUse then UseMeeting(Meeting);
Meeting.ChannelList.Add(Channel);
Channel.IsMeeting := true ;
Channel.Meeting := Meeting ;
end;
end
else
Result := -2 ;
end
else
Result := -1 ;
end;
constructor TDjMeetingCenter.Create(DjSSC :TDjSSCx);
var
i:integer;
begin
FDjSSC := DjSSC;
i:= DConf_EnableConfCard;
if i in [0,3] then
IsRun := true
else
IsRun := false ;
MeetCount := 0 ;
MeetingList := TMeetingList.Create;
end;
function TDjMeetingCenter.DeleteChannel(Channel: PChannel): integer;
var
// i:integer;
Meeting:PMeeting;
begin
Meeting := Channel.Meeting;
if Assigned(Meeting) then
begin
Result:= SubChnl(Meeting.MeetingID,Channel.ChannelID);
if Result = 0 then
begin
Meeting.ChannelList.Remove(Channel);
if Meeting.ChannelList.Count = 0 then
FreeMeeting(Meeting);
end;
end
else
Result := -1 ;
end;
destructor TDjMeetingCenter.destroy;
begin
DConf_DisableConfCard;
end;
{-------------------------------------------------------------------------------
过程名: TDjMeetingCenter.GetFreeMeetRes
作者: 姜亦文
日期: 2006.09.14
参数: 无
h获取一个空闲的会议号
返回值: PMeeting
-------------------------------------------------------------------------------}
function TDjMeetingCenter.GetFreeMeetRes: PMeeting;
begin
Result := MeetingList.GetFreeMeeting ;
end;
function TDjMeetingCenter.GetIdleMeetCount: integer;
begin
Result := 10 - MeetCount ;
end;
function TDjMeetingCenter.GetMeetCount: integer;
begin
Result := MeetCount ;
end;
{-------------------------------------------------------------------------------
过程名: TDjMeetingCenter.StartMeet
作者: 姜亦文
日期: 2006.09.14
参数: ChnlID1: integer
开始一个会议
返回值: integer
-------------------------------------------------------------------------------}
function TDjMeetingCenter.StartMeet(Channel: pChannel): PMeeting;
var
Meeting:PMeeting;
i:integer;
begin
Meeting := GetFreeMeetRes;
if Assigned(Meeting) then
begin
i := AddChannel(Meeting,Channel);
if i = 0 then
Result := Meeting
else
Result := nil ;
end
else
Result := nil ;
end;
procedure TDjMeetingCenter.StopMeet(MeetingID: integer);
begin
end;
procedure TDjMeetingCenter.StopMeet(Channel: PChannel);
begin
end;
procedure TDjMeetingCenter.UseMeeting(Meeting: PMeeting);
begin
Meeting.IsUse := true ;
Inc(MeetCount);
end;
procedure TDjMeetingCenter.FreeMeeting(Meeting: PMeeting);
begin
Meeting.IsUse := false ;
Dec(MeetCount);
end;
function TDjMeetingCenter.GetThreeChannel(Meeting: pMeeting;Channel1,Channel2:PChannel):PChannel;
var
i,j:integer;
begin
if Meeting.ChannelList.Count <> 3 then Result := nil ;
i := Meeting.ChannelList.IndexOf(Channel1);
j := Meeting.ChannelList.IndexOf(Channel2);
if (i<>-1) and (j<>-1) then
begin
Meeting.ChannelList.Remove(Channel1);
Meeting.ChannelList.Remove(Channel2);
Result := Meeting.ChannelList.Items[0];
Meeting.ChannelList.Add(Channel1);
Meeting.ChannelList.Add(Channel2);
end
else
begin
Result := nil ;
end;
end;
function TDjMeetingCenter.GetThreeChannel(Meeting: PMeeting;
Channel1: PChannel): PChannel;
var
i:integer;
begin
if Meeting.ChannelList.Count <> 3 then Result := nil ;
i := Meeting.ChannelList.IndexOf(Channel1);
if (i<>-1) then
begin
Meeting.ChannelList.Remove(Channel1);
Result := Meeting.ChannelList.Items[0];
Meeting.ChannelList.Add(Channel1);
end
else
begin
Result := nil ;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -