CopyParams.cpp 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include "CopyParams.h"
  5. #include <Common.h>
  6. #include <VCLCommon.h>
  7. #include <ScpMain.h>
  8. #include "CustomWinConfiguration.h"
  9. #include "TextsWin.h"
  10. //---------------------------------------------------------------------------
  11. #pragma package(smart_init)
  12. #pragma link "Rights"
  13. #pragma link "HistoryComboBox"
  14. #pragma resource "*.dfm"
  15. //---------------------------------------------------------------------------
  16. __fastcall TCopyParamsFrame::TCopyParamsFrame(TComponent* Owner)
  17. : TFrame(Owner)
  18. {
  19. // on start set different value than we want to allow property-setter to proceed
  20. FDirection = pdToLocal;
  21. Direction = pdToRemote;
  22. FAllowTransferMode = True;
  23. RightsFrame->AllowAddXToDirectories = True;
  24. FParams = new TCopyParamType();
  25. TCopyParamType DefParams;
  26. Params = DefParams;
  27. }
  28. //---------------------------------------------------------------------------
  29. __fastcall TCopyParamsFrame::~TCopyParamsFrame()
  30. {
  31. delete FParams;
  32. }
  33. //---------------------------------------------------------------------------
  34. void __fastcall TCopyParamsFrame::SetParams(TCopyParamType value)
  35. {
  36. assert((value.TransferMode == tmAscii) ||
  37. (value.TransferMode == tmBinary) || (value.TransferMode == tmAutomatic));
  38. switch (value.TransferMode) {
  39. case tmAscii: TMTextButton->Checked = True; break;
  40. case tmBinary: TMBinaryButton->Checked = True; break;
  41. default: TMAutomaticButton->Checked = True; break;
  42. }
  43. FOrigMasks = value.AsciiFileMask.Masks;
  44. AsciiFileMaskCombo->Text = value.AsciiFileMask.Masks;
  45. switch (value.FileNameCase) {
  46. case ncNoChange: CCNoChangeButton->Checked = True; break;
  47. case ncLowerCase: CCLowerCaseButton->Checked = True; break;
  48. case ncUpperCase: CCUpperCaseButton->Checked = True; break;
  49. case ncFirstUpperCase: CCFirstUpperCaseButton->Checked = True; break;
  50. }
  51. ReplaceInvalidCharsCheck->Checked = value.ReplaceInvalidChars;
  52. RightsFrame->AddXToDirectories = value.AddXToDirectories;
  53. RightsFrame->Rights = value.Rights;
  54. PreserveRightsCheck->Checked = value.PreserveRights;
  55. PreserveReadOnlyCheck->Checked = value.PreserveReadOnly;
  56. assert(PreserveTimeCheck);
  57. PreserveTimeCheck->Checked = value.PreserveTime;
  58. CommonCalculateSizeCheck->Checked = value.CalculateSize;
  59. *FParams = value;
  60. UpdateControls();
  61. }
  62. //---------------------------------------------------------------------------
  63. AnsiString __fastcall TCopyParamsFrame::GetAsciiFileMask()
  64. {
  65. return AsciiFileMaskCombo->Text;
  66. }
  67. //---------------------------------------------------------------------------
  68. TCopyParamType __fastcall TCopyParamsFrame::GetParams()
  69. {
  70. TCopyParamType Result = *FParams;
  71. assert(TMTextButton->Checked || TMBinaryButton->Checked || TMAutomaticButton->Checked);
  72. if (TMTextButton->Checked) Result.TransferMode = tmAscii;
  73. else
  74. if (TMBinaryButton->Checked) Result.TransferMode = tmBinary;
  75. else Result.TransferMode = tmAutomatic;
  76. Result.AsciiFileMask.Masks = AsciiFileMaskCombo->Text;
  77. if (!Result.AsciiFileMask.IsValid()) Result.AsciiFileMask.Masks = FOrigMasks;
  78. if (CCLowerCaseButton->Checked) Result.FileNameCase = ncLowerCase;
  79. else
  80. if (CCUpperCaseButton->Checked) Result.FileNameCase = ncUpperCase;
  81. else
  82. if (CCFirstUpperCaseButton->Checked) Result.FileNameCase = ncFirstUpperCase;
  83. else Result.FileNameCase = ncNoChange;
  84. Result.ReplaceInvalidChars = ReplaceInvalidCharsCheck->Checked;
  85. Result.AddXToDirectories = RightsFrame->AddXToDirectories;
  86. Result.Rights = RightsFrame->Rights;
  87. Result.PreserveRights = PreserveRightsCheck->Checked;
  88. Result.PreserveReadOnly = PreserveReadOnlyCheck->Checked;
  89. assert(PreserveTimeCheck);
  90. Result.PreserveTime = PreserveTimeCheck->Checked;
  91. Result.CalculateSize = CommonCalculateSizeCheck->Checked;
  92. return Result;
  93. }
  94. //---------------------------------------------------------------------------
  95. TCheckBox * __fastcall TCopyParamsFrame::GetPreserveTimeCheck()
  96. {
  97. switch (Direction) {
  98. case pdToRemote: return RemotePreserveTimeCheck;
  99. case pdToLocal: return LocalPreserveTimeCheck;
  100. case pdBoth:
  101. default: return CommonPreserveTimestampCheck;
  102. }
  103. }
  104. //---------------------------------------------------------------------------
  105. void __fastcall TCopyParamsFrame::UpdateControls()
  106. {
  107. EnableControl(TransferModeGroup, FAllowTransferMode && Enabled);
  108. EnableControl(AsciiFileMaskLabel,
  109. FAllowTransferMode && TMAutomaticButton->Checked && Enabled);
  110. EnableControl(AsciiFileMaskCombo,
  111. FAllowTransferMode && TMAutomaticButton->Checked && Enabled);
  112. EnableControl(RightsFrame, PreserveRightsCheck->Checked && Enabled);
  113. EnableControl(ReplaceInvalidCharsCheck,
  114. Direction == pdToLocal || Direction == pdBoth || Direction == pdAll);
  115. }
  116. //---------------------------------------------------------------------------
  117. void __fastcall TCopyParamsFrame::SetDirection(TParamsForDirection value)
  118. {
  119. if (Direction != value)
  120. {
  121. Boolean APreserveTime = PreserveTimeCheck->Checked;
  122. FDirection = value;
  123. PreserveTimeCheck->Checked = APreserveTime;
  124. LocalPropertiesGroup->Visible = (Direction == pdToLocal || Direction == pdAll );
  125. RemotePropertiesGroup->Visible = (Direction == pdToRemote || Direction == pdAll );
  126. CommonPropertiesGroup->Visible = (Direction == pdBoth || Direction == pdAll );
  127. LocalPreserveTimeCheck->Visible = (Direction != pdAll);
  128. RemotePreserveTimeCheck->Visible = (Direction != pdAll);
  129. UpdateControls();
  130. }
  131. }
  132. //---------------------------------------------------------------------------
  133. void __fastcall TCopyParamsFrame::ControlChange(TObject * /*Sender*/)
  134. {
  135. UpdateControls();
  136. }
  137. //---------------------------------------------------------------------------
  138. void __fastcall TCopyParamsFrame::BeforeExecute()
  139. {
  140. assert(CustomWinConfiguration);
  141. AsciiFileMaskCombo->Items = CustomWinConfiguration->History["Mask"];
  142. }
  143. //---------------------------------------------------------------------------
  144. void __fastcall TCopyParamsFrame::AfterExecute()
  145. {
  146. assert(CustomWinConfiguration);
  147. AsciiFileMaskCombo->SaveToHistory();
  148. CustomWinConfiguration->History["Mask"] = AsciiFileMaskCombo->Items;
  149. }
  150. //---------------------------------------------------------------------------
  151. void __fastcall TCopyParamsFrame::SelectMask(Integer Start, Integer Length)
  152. {
  153. AsciiFileMaskCombo->SetFocus();
  154. AsciiFileMaskCombo->SelStart = Start;
  155. AsciiFileMaskCombo->SelLength = Length;
  156. }
  157. //---------------------------------------------------------------------------
  158. void __fastcall TCopyParamsFrame::SetAllowTransferMode(Boolean value)
  159. {
  160. FAllowTransferMode = value;
  161. UpdateControls();
  162. }
  163. //---------------------------------------------------------------------------
  164. Boolean __fastcall TCopyParamsFrame::GetAllowTransferMode()
  165. {
  166. return FAllowTransferMode;
  167. }
  168. //---------------------------------------------------------------------------
  169. void __fastcall TCopyParamsFrame::SetEnabled(Boolean Value)
  170. {
  171. TFrame::SetEnabled(Value);
  172. UpdateControls();
  173. }