| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 | //---------------------------------------------------------------------------#include <vcl.h>#pragma hdrstop#include <Common.h>#include <VCLCommon.h>#include <TextsWin.h>#include <CustomWinConfiguration.h>#include <CoreMain.h>#include <WinInterface.h>#include <GUITools.h>#include "RemoteTransfer.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma link "HistoryComboBox"#ifndef NO_RESOURCES#pragma resource "*.dfm"#endif//---------------------------------------------------------------------------bool __fastcall DoRemoteCopyDialog(TStrings * Sessions, TStrings * Directories,  TDirectRemoteCopy AllowDirectCopy, bool Multi, void *& Session, UnicodeString & Target, UnicodeString & FileMask,  bool & DirectCopy, void * CurrentSession){  bool Result;  TRemoteTransferDialog * Dialog = SafeFormCreate<TRemoteTransferDialog>();  try  {    Dialog->Init(Multi, Sessions, Directories, AllowDirectCopy, CurrentSession);    Result = Dialog->Execute(Session, Target, FileMask, DirectCopy);  }  __finally  {    delete Dialog;  }  return Result;}//---------------------------------------------------------------------------__fastcall TRemoteTransferDialog::TRemoteTransferDialog(TComponent * Owner)  : TForm(Owner){  UseSystemSettings(this);  Caption = LoadStr(REMOTE_COPY_TITLE);}//---------------------------------------------------------------------------void __fastcall TRemoteTransferDialog::Init(bool Multi, TStrings * Sessions,  TStrings * Directories, TDirectRemoteCopy AllowDirectCopy, void * CurrentSession){  FMulti = Multi;  SessionCombo->Items = Sessions;  FDirectories = Directories;  DebugAssert(SessionCombo->Items->Count > 0);  DebugAssert(SessionCombo->Items->Count == FDirectories->Count);  FAllowDirectCopy = AllowDirectCopy;  FCurrentSession = CurrentSession;  LoadDialogImage(Image, L"Duplicate");}//---------------------------------------------------------------------------bool __fastcall TRemoteTransferDialog::Execute(void *& Session, UnicodeString & Target,  UnicodeString & FileMask, bool & DirectCopy){  for (int Index = 0; Index < SessionCombo->Items->Count; Index++)  {    if (SessionCombo->Items->Objects[Index] == Session)    {      SessionCombo->ItemIndex = Index;      break;    }  }  DirectoryEdit->Items = CustomWinConfiguration->History[L"RemoteTarget"];  DirectoryEdit->Text = UnixIncludeTrailingBackslash(Target) + FileMask;  FDirectCopy = DirectCopy;  UpdateNotDirectCopyCheck();  bool Result = (ShowModal() == DefaultResult(this));  if (Result)  {    Session = SessionCombo->Items->Objects[SessionCombo->ItemIndex];    CustomWinConfiguration->History[L"RemoteTarget"] = DirectoryEdit->Items;    Target = UnixExtractFilePath(DirectoryEdit->Text);    FileMask = GetFileMask();    DirectCopy = !NotDirectCopyCheck->Checked;  }  return Result;}//---------------------------------------------------------------------------UnicodeString __fastcall TRemoteTransferDialog::GetFileMask(){  return UnixExtractFileName(DirectoryEdit->Text);}//---------------------------------------------------------------------------void __fastcall TRemoteTransferDialog::UpdateControls(){  EnableControl(NotDirectCopyCheck,    IsCurrentSessionSelected() &&    (FAllowDirectCopy != drcDisallow));  EnableControl(OkButton, !DirectoryEdit->Text.IsEmpty());}//---------------------------------------------------------------------------void __fastcall TRemoteTransferDialog::ControlChange(TObject * /*Sender*/){  UpdateControls();}//---------------------------------------------------------------------------void __fastcall TRemoteTransferDialog::FormShow(TObject * /*Sender*/){  InstallPathWordBreakProc(DirectoryEdit);  UpdateControls();  DirectoryEdit->SetFocus();}//---------------------------------------------------------------------------void __fastcall TRemoteTransferDialog::HelpButtonClick(TObject * /*Sender*/){  FormHelp(this);}//---------------------------------------------------------------------------void __fastcall TRemoteTransferDialog::SessionComboChange(TObject * /*Sender*/){  DirectoryEdit->Text =    UnixIncludeTrailingBackslash(FDirectories->Strings[SessionCombo->ItemIndex]) +    UnixExtractFileName(DirectoryEdit->Text);  UpdateNotDirectCopyCheck();  UpdateControls();}//---------------------------------------------------------------------------void __fastcall TRemoteTransferDialog::UpdateNotDirectCopyCheck(){  if (IsCurrentSessionSelected())  {    NotDirectCopyCheck->Checked = !FDirectCopy;  }  else  {    NotDirectCopyCheck->Checked = true;  }}//---------------------------------------------------------------------------void __fastcall TRemoteTransferDialog::FormCloseQuery(TObject * /*Sender*/,  bool & /*CanClose*/){  if (ModalResult == DefaultResult(this))  {    if (!IsFileNameMask(GetFileMask()) && FMulti)    {      UnicodeString Message =        FormatMultiFilesToOneConfirmation(DirectoryEdit->Text, true);      if (MessageDialog(Message, qtConfirmation, qaOK | qaCancel, HELP_NONE) == qaCancel)      {        Abort();      }    }    if (IsCurrentSessionSelected() &&        (FAllowDirectCopy == drcConfirmCommandSession) &&        !NotDirectCopyCheck->Checked &&        GUIConfiguration->ConfirmCommandSession)    {      TMessageParams Params(mpNeverAskAgainCheck);      unsigned int Answer = MessageDialog(LoadStr(REMOTE_COPY_COMMAND_SESSION2),        qtConfirmation, qaOK | qaCancel, HelpKeyword, &Params);      if (Answer == qaNeverAskAgain)      {        GUIConfiguration->ConfirmCommandSession = false;      }      else if (Answer != qaOK)      {        Abort();      }    }  }}//---------------------------------------------------------------------------void __fastcall TRemoteTransferDialog::NotDirectCopyCheckClick(  TObject * /*Sender*/){  if (IsCurrentSessionSelected())  {    FDirectCopy = !NotDirectCopyCheck->Checked;  }}//---------------------------------------------------------------------------bool __fastcall TRemoteTransferDialog::IsCurrentSessionSelected(){  return (SessionCombo->Items->Objects[SessionCombo->ItemIndex] == FCurrentSession);}//---------------------------------------------------------------------------
 |