ucalling.pas
来自「FMA is a free1 powerful phone editing to」· PAS 代码 · 共 520 行 · 第 1/2 页
PAS
520 行
FRingSecs := 0;
end;
end;
end;
procedure TfrmCalling.Set_IsIncoming(const Value: Boolean);
begin
FIsIncoming := Value;
if Visible then
if Value then Form1.ShowBaloonInfo(_('Incoming call...'),60);
end;
function TfrmCalling.HasPersonalizedSound: boolean;
begin
Result := FPersonalized and (MediaPlayer1.FileName <> '');
end;
function TfrmCalling.Get_Busy: Boolean;
begin
Result := FRingOn = 1;
end;
procedure TfrmCalling.Set_Busy(const Value: Boolean);
begin
if Value then FRingOn := 1 else FRingOn := DefRingOutgoingSecs;
FRingSecs := 0;
end;
procedure TfrmCalling.CreateCall(Number: WideString; Popup: boolean; AlphaBlend: Integer);
var
CallName: WideString;
begin
{ Setup variables }
FRingSecs := 0;
FRingOn := DefRingOutgoingSecs;
FStopped := False;
FPersonalized := False;
FPersonalizedSem := False;
FCheck := False;
lblTime.Caption := '00:00'; // do not localize ?
FNotesContact := nil;
FillChar(FContactData,0,SizeOf(FContactData));
Memo.Clear;
Memo.Visible := False;
HeadsetButton.Enabled := True;
AnswerButton.Enabled := True;
HandupButton.Enabled := True;
{ Prepare transparancy }
AlphaBlendValue := AlphaBlend;
{ Resize form to fix message }
if Number = '' then CallName := sUnknownNumber
else CallName := form1.LookupContact(Number,sUnknownContact);
lbAlpha.Font.Style := lbAlpha.Font.Style + [fsBold];
lbAlpha.Alignment := taLeftJustify;
lbAlpha.AutoSize := True;
lbAlpha.Caption := CallName;
lbNumber.Caption := Number;
IsCustomImage := False;
{ Restore form position }
FormPlacement1.RestoreFormPlacement;
Application.ProcessMessages;
{ Resize form }
DoResizeWide;
Height := Constraints.MinHeight;
FCreated := True;
if not Popup then exit;
{ Show window but not activate it --- if using this CLOSE is not working!!!
SetWindowPos(Handle, HWND_TOPMOST,
Left, Top, Width, Height,
SWP_NOACTIVATE or SWP_NOSIZE);
ShowWindow(Handle,SW_SHOWNOACTIVATE);
ShowWindow(HeadsetButton.Handle,SW_SHOWNOACTIVATE);
ShowWindow(AnswerButton.Handle,SW_SHOWNOACTIVATE);
ShowWindow(HandupButton.Handle,SW_SHOWNOACTIVATE);
ShowWindow(Memo.Handle,SW_SHOWNOACTIVATE);
ShowWindow(ImagePanel.Handle,SW_SHOWNOACTIVATE);
ShowWindow(Image32.Handle,SW_SHOWNOACTIVATE);
}
Show;
Update;
end;
procedure TfrmCalling.FormCreate(Sender: TObject);
begin
Left := (Screen.Width - Width) div 2;
Top := (Screen.Height - Height) div 2;
gghTranslateComponent(self);
lbAlpha.Font.Style := lbAlpha.Font.Style + [fsBold];
Image1.Picture.Assign(Form1.CommonBitmaps.Bitmap[1]);
end;
procedure TfrmCalling.DoResizeWide;
var
wide,dif: integer;
begin
wide := lbAlpha.Width;
if lbNumber.Width > wide then wide := lbNumber.Width;
wide := wide + lbAlpha.Left - 4;
if wide > (Constraints.MinWidth-16) then begin
dif := (wide + 8) - ClientWidth;
ClientWidth := wide + 8;
end
else begin
dif := Constraints.MinWidth - Width;
Width := Constraints.MinWidth;
end;
Left := Left - dif div 2;
end;
procedure TfrmCalling.Set_CustomImage(const Value: Boolean);
begin
FCustomImage := Value;
if not Value then
Image32.Bitmap.Assign(Form1.CommonBitmaps.Bitmap[0]);
end;
procedure TfrmCalling.DoExiting;
begin
DoStopPersonalize;
end;
procedure TfrmCalling.DoInCall;
begin
DoStopPersonalize(False);
end;
procedure TfrmCalling.DoShowNotes;
var
SIMData: PSIMData;
ContactName: WideString;
Where: TFindContactResult;
begin
if not Memo.Visible then begin
ContactName := Form1.ExtractContact(lbAlpha.Caption);
Where := Form1.WhereisContact(ContactName,fcByName);
if Where = Form1.WhereisContact(lbNumber.Caption,fcByNumber) then
case Where of
frPhonebook:
if Form1.frmMEEdit.FindContact(ContactName,SIMData) then begin
{ Fill data needed for Notes access }
FContactData.LUID := SIMData^.LUID;
FContactData.CDID := SIMData^.CDID;
FNotesContact := @FContactData;
end;
frSIMCard:
if Form1.frmSMEdit.FindContact(ContactName,SIMData) then begin
{ Fill data needed for Notes access }
FContactData.LUID := SIMData^.LUID;
FContactData.CDID := SIMData^.CDID;
FNotesContact := @FContactData;
end;
frIrmcSync:
Form1.frmSyncPhonebook.FindContact(ContactName,FNotesContact);
end;
// notes
if Assigned(FNotesContact) then
Memo.Visible := GetContactNotes(FNotesContact,Memo.Lines);
end;
end;
procedure TfrmCalling.CloseCall(CanClose,CanHangUp: boolean);
begin
if FCreated then begin
FCreated := False;
{ Cancel any call attempt. If we're in call do not hang up here! }
if CanHangUp and Form1.FConnected and IsCalling and not IsTalking then
Form1.VoiceHangUp(IsIncoming);
{ Stop any sound }
DoExiting;
TimeTimer.Enabled := False;
Image32.Bitmap.Clear;
FormPlacement1.SaveFormPlacement;
end;
if CanClose then Close; // No stack overflow coz CanClose is false in Close().
end;
procedure TfrmCalling.HeadsetButtonClick(Sender: TObject);
begin
DoInCall;
try
Form1.VoiceAnswer;
except
end;
FCheck := True;
Form1.DoDisconnectTemporary;
end;
procedure TfrmCalling.AddToPhonebook1Click(Sender: TObject);
begin
if Form1.AddNewToPhonebook(lbNumber.Caption) then begin
{ Update view }
lbAlpha.Caption := Form1.ExtractContact(Form1.ContactNumberByTel(lbNumber.Caption));
Image32.Bitmap.Clear;
AddToPhonebook1.Enabled := False;
{ Personalize again }
FPersonalized := False;
FPersonalizedSem := False;
DoPersonalize;
end;
end;
procedure TfrmCalling.MoreButtonClick(Sender: TObject);
var
p: TPoint;
begin
with (Sender as TTntButton) do
p := ClientToScreen(Point(0,Height));
PopupMenu1.Popup(p.X,p.Y);
end;
procedure TfrmCalling.AnswerButtonClick(Sender: TObject);
begin
AnswerButton.Enabled := False;
DoInCall;
try
Form1.VoiceAnswer;
except // Error may occur if call is alerady active...
end;
FCheck := True;
if Visible and Memo.Visible then
Memo.SetFocus;
end;
procedure TfrmCalling.HandupButtonClick(Sender: TObject);
begin
HandupButton.Enabled := False;
DoExiting;
try
Form1.VoiceHangUp;
except
end;
end;
procedure TfrmCalling.PopupMenu1Popup(Sender: TObject);
begin
Answer1.Enabled := AnswerButton.Enabled;
HangUp1.Enabled := HandupButton.Enabled;
MessageContact1.Enabled := Pos(sUnknownNumber,lbAlpha.Caption) = 0;
{ Add to ME if no name included or it is an unknown contact name }
AddToPhonebook1.Enabled := MessageContact1.Enabled and (Pos(sUnknownContact,lbAlpha.Caption) <> 0);
end;
procedure TfrmCalling.Ignore1Click(Sender: TObject);
begin
Close;
end;
procedure TfrmCalling.MessageContact1Click(Sender: TObject);
begin
if lbNumber.Caption <> '' then begin
frmMessageContact.Clear;
Form1.ActionSMSNewMsg.Execute;
frmMessageContact.AddRecipient(Form1.ExtractContact(lbAlpha.Caption)+' ['+lbNumber.Caption+']');
frmMessageContact.Memo.SetFocus;
end;
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?