1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
|
unit opkman_repositorydetailsfrm;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls, LazFileUtils;
type
{ TRepositoryDetailsFrm }
TRepositoryDetailsFrm = class(TForm)
bOk: TButton;
bCancel: TButton;
edName: TEdit;
edAddress: TEdit;
lbName: TLabel;
lbAddress: TLabel;
lbDescription: TLabel;
lbOF2: TLabel;
mDescription: TMemo;
pnButtons: TPanel;
SDRep: TSaveDialog;
procedure bOkClick(Sender: TObject);
procedure edAddressChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
FFileName: string;
FIsNew: boolean;
function IsDuplicateRepository(const AAddress: string): boolean;
public
property FileName: string read FFileName;
property IsNew: boolean read FIsNew write FIsNew;
end;
var
RepositoryDetailsFrm: TRepositoryDetailsFrm;
implementation
uses opkman_const, opkman_common, opkman_options;
{$R *.lfm}
{ TRepositoryDetailsFrm }
procedure TRepositoryDetailsFrm.FormCreate(Sender: TObject);
begin
Caption := rsRepositoryDetailsFrm_Caption;
lbName.Caption := rsRepositoryDetailsFrm_lbName_Caption;
edName.Hint := rsRepositoryDetailsFrm_edName_Hint;
lbAddress.Caption := rsRepositoryDetailsFrm_lbAddress_Caption;
edAddress.Hint := rsRepositoryDetailsFrm_edAddress_Hint;
lbDescription.Caption := rsRepositoryDetailsFrm_lbDescription_Caption;
mDescription.Hint := rsRepositoryDetailsFrm_mDescription_Hint;
bOk.Caption := rsRepositoryDetailsFrm_bOk_Caption;
bOk.Hint := rsRepositoryDetailsFrm_bOk_Hint;
bCancel.Caption := rsRepositoryDetailsFrm_bCancel_Caption;
bCancel.Hint := rsRepositoryDetailsFrm_bCancel_Hint;
end;
function TRepositoryDetailsFrm.IsDuplicateRepository(const AAddress: string): boolean;
var
I: integer;
begin
Result := False;
for I := 0 to Options.RemoteRepository.Count - 1 do
begin
if UpperCase(Options.RemoteRepository.Strings[I]) = UpperCase(AAddress) then
begin
Result := True;
Break;
end;
end;
end;
procedure TRepositoryDetailsFrm.bOkClick(Sender: TObject);
var
Address: String;
begin
if Trim(edName.Text) = '' then
begin
MessageDlgEx(rsRepositoryDetailsFrm_Info1, mtInformation, [mbOK], Self);
edName.SetFocus;
Exit;
end;
if (FIsNew) then
begin
if SDRep.Execute then
begin
if (not IsDirectoryEmpty(ExtractFilePath(SDRep.FileName))) then
if MessageDlgEx(Format(rsCreateRepositoryFrm_Info1, [ExtractFilePath(SDRep.FileName)]), mtConfirmation, [mbYes, mbNo], Self) = mrNo then
Exit;
if not DirectoryIsWritable(ExtractFilePath(SDRep.FileName)) then
begin
MessageDlgEx(Format(rsCreateRepositoryFrm_Info1, [ExtractFilePath(SDRep.FileName)]), mtConfirmation, [mbOK], Self);
Exit;
end;
FFileName := SDRep.FileName;
end
else
Exit;
end;
if Trim(edAddress.Text) <> '' then
begin
Address := Trim(edAddress.Text);
if Address[Length(Address)] <> '/' then
Address := Address + '/';
if not IsDuplicateRepository(Address) then
Options.RemoteRepository.Add(Address);
end;
ModalResult := mrOk;
end;
procedure TRepositoryDetailsFrm.edAddressChange(Sender: TObject);
begin
edAddress.Font.Color := clDefault;
end;
end.
|