unit DataFlowSettingForm; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.StdCtrls, Vcl.ExtCtrls, Bs1PolicyUnit; type TDataFlowSettingForm = class(TForm) PanelBottom: TPanel; btnSave: TButton; btnClose: TButton; PageControlMain: TPageControl; // [ÅÇ 1] ¿¹¿Ü °æ·Î tsException: TTabSheet; PanelExTop: TPanel; LabelEx: TLabel; EditExPath: TEdit; btnAddEx: TButton; btnDelEx: TButton; ListBoxExceptions: TListBox; // [ÅÇ 2] MTP/BT Á¦¾î tsDevice: TTabSheet; GroupBoxMtp: TGroupBox; LabelM1: TLabel; LabelM2: TLabel; cbMtpPolicy: TComboBox; edtMtpSize: TEdit; GroupBoxBt: TGroupBox; LabelB1: TLabel; LabelB2: TLabel; cbBtPolicy: TComboBox; edtBtSize: TEdit; grpCDROM: TGroupBox; grbUsbToUsb: TGroupBox; lbl1: TLabel; lbl2: TLabel; cbbCDROMPolicy: TComboBox; lbl3: TLabel; lbl4: TLabel; cbbUsbToUsbPolicy: TComboBox; edtCDROMSize: TEdit; edtUsbToUsbSize: TEdit; // ¼öÁ¤»çÇ× ¹Ý¿µ ¹öư procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); // Tab 1: Exception procedure btnAddExClick(Sender: TObject); procedure btnDelExClick(Sender: TObject); procedure ListBoxExceptionsClick(Sender: TObject); // Tab 3: Hook procedure lbHookProcClick(Sender: TObject); procedure btnSaveClick(Sender: TObject); procedure btnCloseClick(Sender: TObject); procedure PanelBottomClick(Sender: TObject); private FTempConfig: TDataFlowConfig; // ÆíÁý ÁßÀÎ Àӽà µ¥ÀÌÅÍ (Cancel Áö¿ø¿ë) procedure LoadUIFromConfig; // procedure SaveUIToConfig; procedure ClearHookDetails; public procedure SetEngine(AEngine: TBs1Policy); end; var DataFlowForm: TDataFlowSettingForm; implementation {$R *.dfm} procedure TDataFlowSettingForm.FormCreate(Sender: TObject); begin Caption := 'ÆÄÀÏ Â÷´Ü Á¤Ã¥ ¼³Á¤'; Position := poOwnerFormCenter; FTempConfig := TDataFlowConfig.Create; // ÄÞº¸¹Ú½º ÃʱâÈ­ cbMtpPolicy.Items.AddStrings(['0: Allow', '1: Block']); cbBtPolicy.Items.AddStrings(['0: Allow', '1: Block']); cbbCDROMPolicy.Items.AddStrings(['0: Allow', '1: Block']); cbbUsbToUsbPolicy.Items.AddStrings(['0: Allow', '1: Block']); end; procedure TDataFlowSettingForm.FormDestroy(Sender: TObject); begin FTempConfig.Free; end; procedure TDataFlowSettingForm.SetEngine(AEngine: TBs1Policy); begin if Assigned(gBs1Policy) then begin gBs1Policy.LoadDataFlowConfig; // Ãֽе¥ÀÌÅÍ ·Îµå // Àӽà °´Ã¼·Î º¹»ç (ÆíÁý Áß Ãë¼Ò °¡´ÉÇϰÔ) FTempConfig.Assign(gBs1Policy.DataFlowConfig); LoadUIFromConfig; end; end; procedure TDataFlowSettingForm.LoadUIFromConfig; begin // 1. Exception Path ListBoxExceptions.Items.Assign(FTempConfig.GlobalExceptionPath); // 2. MTP/BT cbMtpPolicy.ItemIndex := FTempConfig.MtpConfig.Policy; // °ª ¹üÀ§ üũ ÇÊ¿ä ½Ã º¸°­ edtMtpSize.Text := IntToStr(FTempConfig.MtpConfig.FileSize); cbBtPolicy.ItemIndex := FTempConfig.BtConfig.Policy; edtBtSize.Text := IntToStr(FTempConfig.BtConfig.FileSize); cbbCDROMPolicy.ItemIndex := FTempConfig.CDROMConfig.Policy; edtCDROMSize.Text := IntToStr(FTempConfig.CDROMConfig.FileSize); cbbUsbToUsbPolicy.ItemIndex := FTempConfig.UsbToUsbConfig.Policy; edtUsbToUsbSize.Text := IntToStr(FTempConfig.UsbToUsbConfig.FileSize); ClearHookDetails; end; procedure TDataFlowSettingForm.PanelBottomClick(Sender: TObject); begin end; // ----------------------------------------------------------------------------- // [ÅÇ 1] Exception Path // ----------------------------------------------------------------------------- procedure TDataFlowSettingForm.btnAddExClick(Sender: TObject); begin if Trim(EditExPath.Text) <> '' then begin ListBoxExceptions.Items.Add(Trim(EditExPath.Text)); EditExPath.Text := ''; end; end; procedure TDataFlowSettingForm.btnDelExClick(Sender: TObject); begin if ListBoxExceptions.ItemIndex >= 0 then ListBoxExceptions.Items.Delete(ListBoxExceptions.ItemIndex); end; procedure TDataFlowSettingForm.ListBoxExceptionsClick(Sender: TObject); begin if ListBoxExceptions.ItemIndex >= 0 then EditExPath.Text := ListBoxExceptions.Items[ListBoxExceptions.ItemIndex]; end; // ----------------------------------------------------------------------------- // [ÅÇ 3] Hook Process // ----------------------------------------------------------------------------- procedure TDataFlowSettingForm.ClearHookDetails; begin end; procedure TDataFlowSettingForm.lbHookProcClick(Sender: TObject); var Item: THookProcessItem; begin end; // ----------------------------------------------------------------------------- // [Main] Save & Close // ----------------------------------------------------------------------------- procedure TDataFlowSettingForm.btnSaveClick(Sender: TObject); begin if not Assigned(gBs1Policy) then Exit; // 1. Exception Path ¹Ý¿µ FTempConfig.GlobalExceptionPath.Assign(ListBoxExceptions.Items); // 2. MTP/BT ¹Ý¿µ if cbMtpPolicy.ItemIndex >= 0 then FTempConfig.MtpConfig.Policy := cbMtpPolicy.ItemIndex; FTempConfig.MtpConfig.FileSize := StrToIntDef(edtMtpSize.Text, 20); if cbBtPolicy.ItemIndex >= 0 then FTempConfig.BtConfig.Policy := cbBtPolicy.ItemIndex; FTempConfig.BtConfig.FileSize := StrToIntDef(edtBtSize.Text, 20); if cbbCDROMPolicy.ItemIndex >= 0 then FTempConfig.CDROMConfig.Policy := cbbCDROMPolicy.ItemIndex; FTempConfig.CDROMConfig.FileSize := StrToIntDef(edtCDROMSize.Text, 20); if cbbUsbToUsbPolicy.ItemIndex >= 0 then FTempConfig.UsbToUsbConfig.Policy := cbbUsbToUsbPolicy.ItemIndex; FTempConfig.UsbToUsbConfig.FileSize := StrToIntDef(edtUsbToUsbSize.Text, 20); // 3. ½ÇÁ¦ ¿£Áø¿¡ ¹Ý¿µ ÈÄ ÀúÀå gBs1Policy.DataFlowConfig.Assign(FTempConfig); try gBs1Policy.SaveDataFlowConfig; ShowMessage('ÀúÀå ¿Ï·á'); ModalResult := mrOk; except on E: Exception do ShowMessage('ÀúÀå ½ÇÆÐ: ' + E.Message); end; end; procedure TDataFlowSettingForm.btnCloseClick(Sender: TObject); begin Close; end; end.