CopyParams.cpp 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  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. FForcePreserveTime = false;
  23. FAllowTransferMode = True;
  24. RightsFrame->AllowAddXToDirectories = True;
  25. FParams = new TCopyParamType();
  26. TCopyParamType DefParams;
  27. Params = DefParams;
  28. }
  29. //---------------------------------------------------------------------------
  30. __fastcall TCopyParamsFrame::~TCopyParamsFrame()
  31. {
  32. delete FParams;
  33. }
  34. //---------------------------------------------------------------------------
  35. void __fastcall TCopyParamsFrame::SetParams(TCopyParamType value)
  36. {
  37. assert((value.TransferMode == tmAscii) ||
  38. (value.TransferMode == tmBinary) || (value.TransferMode == tmAutomatic));
  39. switch (value.TransferMode) {
  40. case tmAscii: TMTextButton->Checked = True; break;
  41. case tmBinary: TMBinaryButton->Checked = True; break;
  42. default: TMAutomaticButton->Checked = True; break;
  43. }
  44. FOrigMasks = value.AsciiFileMask.Masks;
  45. AsciiFileMaskCombo->Text = value.AsciiFileMask.Masks;
  46. switch (value.FileNameCase) {
  47. case ncNoChange: CCNoChangeButton->Checked = True; break;
  48. case ncLowerCase: CCLowerCaseButton->Checked = True; break;
  49. case ncUpperCase: CCUpperCaseButton->Checked = True; break;
  50. case ncFirstUpperCase: CCFirstUpperCaseButton->Checked = True; break;
  51. }
  52. ReplaceInvalidCharsCheck->Checked = value.ReplaceInvalidChars;
  53. RightsFrame->AddXToDirectories = value.AddXToDirectories;
  54. RightsFrame->Rights = value.Rights;
  55. PreserveRightsCheck->Checked = value.PreserveRights;
  56. PreserveReadOnlyCheck->Checked = value.PreserveReadOnly;
  57. assert(PreserveTimeCheck);
  58. PreserveTimeCheck->Checked = value.PreserveTime;
  59. CommonCalculateSizeCheck->Checked = value.CalculateSize;
  60. *FParams = value;
  61. UpdateControls();
  62. }
  63. //---------------------------------------------------------------------------
  64. AnsiString __fastcall TCopyParamsFrame::GetAsciiFileMask()
  65. {
  66. return AsciiFileMaskCombo->Text;
  67. }
  68. //---------------------------------------------------------------------------
  69. TCopyParamType __fastcall TCopyParamsFrame::GetParams()
  70. {
  71. TCopyParamType Result = *FParams;
  72. assert(TMTextButton->Checked || TMBinaryButton->Checked || TMAutomaticButton->Checked);
  73. if (TMTextButton->Checked) Result.TransferMode = tmAscii;
  74. else
  75. if (TMBinaryButton->Checked) Result.TransferMode = tmBinary;
  76. else Result.TransferMode = tmAutomatic;
  77. Result.AsciiFileMask.Masks = AsciiFileMaskCombo->Text;
  78. if (!Result.AsciiFileMask.IsValid()) Result.AsciiFileMask.Masks = FOrigMasks;
  79. if (CCLowerCaseButton->Checked) Result.FileNameCase = ncLowerCase;
  80. else
  81. if (CCUpperCaseButton->Checked) Result.FileNameCase = ncUpperCase;
  82. else
  83. if (CCFirstUpperCaseButton->Checked) Result.FileNameCase = ncFirstUpperCase;
  84. else Result.FileNameCase = ncNoChange;
  85. Result.ReplaceInvalidChars = ReplaceInvalidCharsCheck->Checked;
  86. Result.AddXToDirectories = RightsFrame->AddXToDirectories;
  87. Result.Rights = RightsFrame->Rights;
  88. Result.PreserveRights = PreserveRightsCheck->Checked;
  89. Result.PreserveReadOnly = PreserveReadOnlyCheck->Checked;
  90. assert(PreserveTimeCheck);
  91. Result.PreserveTime = PreserveTimeCheck->Checked;
  92. Result.CalculateSize = CommonCalculateSizeCheck->Checked;
  93. return Result;
  94. }
  95. //---------------------------------------------------------------------------
  96. TCheckBox * __fastcall TCopyParamsFrame::GetPreserveTimeCheck()
  97. {
  98. switch (Direction) {
  99. case pdToRemote: return RemotePreserveTimeCheck;
  100. case pdToLocal: return LocalPreserveTimeCheck;
  101. case pdBoth:
  102. default: return CommonPreserveTimestampCheck;
  103. }
  104. }
  105. //---------------------------------------------------------------------------
  106. void __fastcall TCopyParamsFrame::UpdateControls()
  107. {
  108. EnableControl(TransferModeGroup, FAllowTransferMode && Enabled);
  109. EnableControl(AsciiFileMaskLabel,
  110. FAllowTransferMode && TMAutomaticButton->Checked && Enabled);
  111. EnableControl(AsciiFileMaskCombo,
  112. FAllowTransferMode && TMAutomaticButton->Checked && Enabled);
  113. EnableControl(RightsFrame, PreserveRightsCheck->Checked && Enabled);
  114. EnableControl(ReplaceInvalidCharsCheck,
  115. Direction == pdToLocal || Direction == pdBoth || Direction == pdAll);
  116. EnableControl(PreserveTimeCheck, !ForcePreserveTime);
  117. if (ForcePreserveTime)
  118. {
  119. PreserveTimeCheck->Checked = true;
  120. }
  121. }
  122. //---------------------------------------------------------------------------
  123. void __fastcall TCopyParamsFrame::SetDirection(TParamsForDirection value)
  124. {
  125. if (Direction != value)
  126. {
  127. Boolean APreserveTime = PreserveTimeCheck->Checked;
  128. FDirection = value;
  129. PreserveTimeCheck->Checked = APreserveTime;
  130. LocalPropertiesGroup->Visible = (Direction == pdToLocal || Direction == pdAll );
  131. RemotePropertiesGroup->Visible = (Direction == pdToRemote || Direction == pdAll );
  132. CommonPropertiesGroup->Visible = (Direction == pdBoth || Direction == pdAll );
  133. LocalPreserveTimeCheck->Visible = (Direction != pdAll);
  134. RemotePreserveTimeCheck->Visible = (Direction != pdAll);
  135. UpdateControls();
  136. }
  137. }
  138. //---------------------------------------------------------------------------
  139. void __fastcall TCopyParamsFrame::ControlChange(TObject * /*Sender*/)
  140. {
  141. UpdateControls();
  142. }
  143. //---------------------------------------------------------------------------
  144. void __fastcall TCopyParamsFrame::BeforeExecute()
  145. {
  146. assert(CustomWinConfiguration);
  147. AsciiFileMaskCombo->Items = CustomWinConfiguration->History["Mask"];
  148. }
  149. //---------------------------------------------------------------------------
  150. void __fastcall TCopyParamsFrame::AfterExecute()
  151. {
  152. assert(CustomWinConfiguration);
  153. AsciiFileMaskCombo->SaveToHistory();
  154. CustomWinConfiguration->History["Mask"] = AsciiFileMaskCombo->Items;
  155. }
  156. //---------------------------------------------------------------------------
  157. void __fastcall TCopyParamsFrame::SelectMask(Integer Start, Integer Length)
  158. {
  159. AsciiFileMaskCombo->SetFocus();
  160. AsciiFileMaskCombo->SelStart = Start;
  161. AsciiFileMaskCombo->SelLength = Length;
  162. }
  163. //---------------------------------------------------------------------------
  164. void __fastcall TCopyParamsFrame::SetAllowTransferMode(Boolean value)
  165. {
  166. FAllowTransferMode = value;
  167. UpdateControls();
  168. }
  169. //---------------------------------------------------------------------------
  170. void __fastcall TCopyParamsFrame::SetForcePreserveTime(bool value)
  171. {
  172. FForcePreserveTime = value;
  173. UpdateControls();
  174. }
  175. //---------------------------------------------------------------------------
  176. Boolean __fastcall TCopyParamsFrame::GetAllowTransferMode()
  177. {
  178. return FAllowTransferMode;
  179. }
  180. //---------------------------------------------------------------------------
  181. void __fastcall TCopyParamsFrame::SetEnabled(Boolean Value)
  182. {
  183. TFrame::SetEnabled(Value);
  184. UpdateControls();
  185. }