📄 keyring.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Keyring.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmSelectKeyring *frmSelectKeyring;
//---------------------------------------------------------------------------
__fastcall TfrmSelectKeyring::TfrmSelectKeyring(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
bool TryFileName(AnsiString BaseFileName, AnsiString NewFileName, bool OpenKeyring,
AnsiString &FoundFileName, AnsiString ValidBaseName)
{
bool Result;
bool BaseValid = ExtractFileName(BaseFileName) == ValidBaseName;
BaseFileName = ExtractFilePath(BaseFileName) + NewFileName;
if (OpenKeyring)
{
Result = FileExists(BaseFileName);
if (Result)
FoundFileName = BaseFileName;
}
else
{
Result = BaseValid;
FoundFileName = BaseFileName;
}
return Result;
}
//---------------------------------------------------------------------------
bool TryExtension(AnsiString BaseFileName, AnsiString NewExtension, bool OpenKeyring, AnsiString &FoundFileName)
{
bool Result;
BaseFileName = ChangeFileExt(BaseFileName, NewExtension);
if (OpenKeyring)
{
Result = FileExists(BaseFileName);
if (Result)
FoundFileName = BaseFileName;
}
else
{
Result = true;
FoundFileName = BaseFileName;
}
return Result;
}
//---------------------------------------------------------------------------
bool FindKeyRingPair(AnsiString FileName, bool IsPublic, bool OpenKeyring, AnsiString &PubFileName, AnsiString SecFileName)
{
bool Result = true;
if (!OpenKeyring && (ExtractFileExt(FileName).IsEmpty()))
{
if (IsPublic)
FileName = ChangeFileExt(FileName, ".pkr");
else
FileName = ChangeFileExt(FileName, ".skr");
}
PubFileName = "";
SecFileName = "";
if (IsPublic)
PubFileName = FileName;
else
SecFileName = FileName;
if (Result)
{
if (!PubFileName.IsEmpty())
{
if (TryFileName(PubFileName, "secring.skr", OpenKeyring, FileName, "pubring.pkr") ||
TryFileName(PubFileName, "secring.seckr", OpenKeyring, FileName, "pubring.pubkr") ||
TryFileName(PubFileName, "secring.pgp", OpenKeyring, FileName, "pubring.pgp") ||
TryExtension(PubFileName, ".skr", OpenKeyring, FileName) ||
TryExtension(PubFileName, ".seckr", OpenKeyring, FileName))
SecFileName = FileName;
}
else
{
if (TryFileName(PubFileName, "pubring.pkr", OpenKeyring, FileName, "secring.skr") ||
TryFileName(PubFileName, "pubring.pubkr", OpenKeyring, FileName, "secring.seckr") ||
TryFileName(PubFileName, "pubring.pgp", OpenKeyring, FileName, "secring.pgp") ||
TryExtension(PubFileName, ".pkr", OpenKeyring, FileName) ||
TryExtension(PubFileName, ".pubkr", OpenKeyring, FileName))
PubFileName = FileName;
}
Result = PubFileName.IsEmpty();
}
return Result;
}
//---------------------------------------------------------------------------
void __fastcall TfrmSelectKeyring::edtPubChange(TObject *Sender)
{
/* if not FChanging and FindKeyRingPair(edtPub.Text, True, OpenKeyring, PubFileName,
SecFileName) then
begin
FChanging := True;
try
edtSec.Text := SecFileName;
finally
FChanging := False;
end;
end;*/
btnOK->Enabled = !edtPub->Text.IsEmpty();
}
//---------------------------------------------------------------------------
void __fastcall TfrmSelectKeyring::edtSecChange(TObject *Sender)
{
/* if not FChanging and FindKeyRingPair(edtSec.Text, False, OpenKeyring, PubFileName,
SecFileName) then
begin
FChanging := True;
try
edtPub.Text := PubFileName;
finally
FChanging := False;
end;
end;*/
btnOK->Enabled = !edtPub->Text.IsEmpty();
}
//---------------------------------------------------------------------------
void __fastcall TfrmSelectKeyring::btnPubClick(TObject *Sender)
{
if (OpenKeyring)
{
OpenDlg->Filter = "Public keyring files (*.pkr;*.pubkr;*.pgp)|*.pkr;*.pubkr;*.pgp|All files(*.*)|*.*";
OpenDlg->FilterIndex = 1;
OpenDlg->DefaultExt = ".pkr";
OpenDlg->Title = "Select public keyring file";
OpenDlg->FileName = edtPub->Text;
if (OpenDlg->Execute())
edtPub->Text = OpenDlg->FileName;
}
else
{
SaveDlg->Filter = "Public keyring files (*.pkr;*.pubkr;*.pgp)|*.pkr;*.pubkr;*.pgp|All files(*.*)|*.*";
SaveDlg->FilterIndex = 1;
SaveDlg->DefaultExt = ".pkr";
SaveDlg->Title = "Select public keyring file";
SaveDlg->FileName = edtPub->Text;
if (SaveDlg->Execute())
edtPub->Text = SaveDlg->FileName;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSelectKeyring::btnSecClick(TObject *Sender)
{
if (OpenKeyring)
{
OpenDlg->Filter = "Private keyring files (*.skr;*.prvkr;*.pgp)|*.skr;*.prvkr;*.pgp|All files(*.*)|*.*";
OpenDlg->FilterIndex = 1;
OpenDlg->DefaultExt = ".skr";
OpenDlg->Title = "Select private keyring file";
OpenDlg->FileName = edtSec->Text;
if (OpenDlg->Execute())
edtSec->Text = OpenDlg->FileName;
}
else
{
SaveDlg->Filter = "Private keyring files (*.skr;*.prvkr;*.pgp)|*.skr;*.prvkr;*.pgp|All files(*.*)|*.*";
SaveDlg->FilterIndex = 1;
SaveDlg->DefaultExt = ".skr";
SaveDlg->Title = "Select private keyring file";
SaveDlg->FileName = edtSec->Text;
if (SaveDlg->Execute())
edtSec->Text = SaveDlg->FileName;
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -