?? umeetingcenter.pas
字號:
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
作者: fengfan
日期: 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
作者: fengfan
日期: 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
作者: fengfan
日期: 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 + -