FullSynchronize.cpp 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include "FullSynchronize.h"
  5. #include "VCLCommon.h"
  6. #include <ScpMain.h>
  7. #include <Common.h>
  8. #include <Configuration.h>
  9. #include <TextsWin.h>
  10. #include <CustomWinConfiguration.h>
  11. //---------------------------------------------------------------------------
  12. #pragma package(smart_init)
  13. #pragma link "XPGroupBox"
  14. #pragma link "HistoryComboBox"
  15. #pragma resource "*.dfm"
  16. //---------------------------------------------------------------------------
  17. bool __fastcall DoFullSynchronizeDialog(TSynchronizeMode & Mode, int & Params,
  18. AnsiString & LocalDirectory, AnsiString & RemoteDirectory, bool & SaveSettings)
  19. {
  20. bool Result;
  21. TFullSynchronizeDialog * Dialog = new TFullSynchronizeDialog(Application);
  22. try
  23. {
  24. Dialog->Mode = Mode;
  25. Dialog->Params = Params;
  26. Dialog->LocalDirectory = LocalDirectory;
  27. Dialog->RemoteDirectory = RemoteDirectory;
  28. Dialog->SaveSettings = SaveSettings;
  29. Result = Dialog->Execute();
  30. if (Result)
  31. {
  32. Mode = Dialog->Mode;
  33. Params = Dialog->Params;
  34. LocalDirectory = Dialog->LocalDirectory;
  35. RemoteDirectory = Dialog->RemoteDirectory;
  36. SaveSettings = Dialog->SaveSettings;
  37. }
  38. }
  39. __finally
  40. {
  41. delete Dialog;
  42. }
  43. return Result;
  44. }
  45. //---------------------------------------------------------------------------
  46. __fastcall TFullSynchronizeDialog::TFullSynchronizeDialog(TComponent* Owner)
  47. : TForm(Owner)
  48. {
  49. UseSystemSettings(this);
  50. FParams = 0;
  51. }
  52. //---------------------------------------------------------------------------
  53. void __fastcall TFullSynchronizeDialog::UpdateControls()
  54. {
  55. EnableControl(SynchronizeDeleteCheck, !SynchronizeBothButton->Checked);
  56. EnableControl(OkButton, !LocalDirectoryEdit->Text.IsEmpty() &&
  57. !RemoteDirectoryEdit->Text.IsEmpty());
  58. }
  59. //---------------------------------------------------------------------------
  60. void __fastcall TFullSynchronizeDialog::ControlChange(TObject * /*Sender*/)
  61. {
  62. UpdateControls();
  63. }
  64. //---------------------------------------------------------------------------
  65. bool __fastcall TFullSynchronizeDialog::Execute()
  66. {
  67. LocalDirectoryEdit->Items = CustomWinConfiguration->History["LocalDirectory"];
  68. RemoteDirectoryEdit->Items = CustomWinConfiguration->History["RemoteDirectory"];
  69. bool Result = (ShowModal() == mrOk);
  70. if (Result)
  71. {
  72. LocalDirectoryEdit->SaveToHistory();
  73. CustomWinConfiguration->History["LocalDirectory"] = LocalDirectoryEdit->Items;
  74. RemoteDirectoryEdit->SaveToHistory();
  75. CustomWinConfiguration->History["RemoteDirectory"] = RemoteDirectoryEdit->Items;
  76. }
  77. return Result;
  78. }
  79. //---------------------------------------------------------------------------
  80. void __fastcall TFullSynchronizeDialog::SetRemoteDirectory(const AnsiString value)
  81. {
  82. RemoteDirectoryEdit->Text = value;
  83. }
  84. //---------------------------------------------------------------------------
  85. AnsiString __fastcall TFullSynchronizeDialog::GetRemoteDirectory()
  86. {
  87. return RemoteDirectoryEdit->Text;
  88. }
  89. //---------------------------------------------------------------------------
  90. void __fastcall TFullSynchronizeDialog::SetLocalDirectory(const AnsiString value)
  91. {
  92. LocalDirectoryEdit->Text = value;
  93. }
  94. //---------------------------------------------------------------------------
  95. AnsiString __fastcall TFullSynchronizeDialog::GetLocalDirectory()
  96. {
  97. return LocalDirectoryEdit->Text;
  98. }
  99. //---------------------------------------------------------------------------
  100. void __fastcall TFullSynchronizeDialog::SetMode(TSynchronizeMode value)
  101. {
  102. switch (value)
  103. {
  104. case smRemote:
  105. SynchronizeRemoteButton->Checked = true;
  106. break;
  107. case smLocal:
  108. SynchronizeLocalButton->Checked = true;
  109. break;
  110. case smBoth:
  111. SynchronizeBothButton->Checked = true;
  112. break;
  113. default:
  114. assert(false);
  115. }
  116. }
  117. //---------------------------------------------------------------------------
  118. TSynchronizeMode __fastcall TFullSynchronizeDialog::GetMode()
  119. {
  120. if (SynchronizeRemoteButton->Checked)
  121. {
  122. return smRemote;
  123. }
  124. else if (SynchronizeLocalButton->Checked)
  125. {
  126. return smLocal;
  127. }
  128. else
  129. {
  130. assert(SynchronizeBothButton->Checked);
  131. return smBoth;
  132. }
  133. }
  134. //---------------------------------------------------------------------------
  135. void __fastcall TFullSynchronizeDialog::SetParams(int value)
  136. {
  137. FParams = value & ~(spDelete | spNoConfirmation);
  138. SynchronizeDeleteCheck->Checked = (value & spDelete) != 0;
  139. SynchronizeNoConfirmationCheck->Checked = (value & spNoConfirmation) != 0;
  140. }
  141. //---------------------------------------------------------------------------
  142. int __fastcall TFullSynchronizeDialog::GetParams()
  143. {
  144. return FParams |
  145. (SynchronizeDeleteCheck->Checked ? spDelete : 0) |
  146. (SynchronizeNoConfirmationCheck->Checked ? spNoConfirmation : 0);
  147. }
  148. //---------------------------------------------------------------------------
  149. void __fastcall TFullSynchronizeDialog::LocalDirectoryBrowseButtonClick(
  150. TObject * /*Sender*/)
  151. {
  152. AnsiString Directory = LocalDirectoryEdit->Text;
  153. if (SelectDirectory(Directory, LoadStr(SELECT_LOCAL_DIRECTORY), false))
  154. {
  155. LocalDirectoryEdit->Text = Directory;
  156. }
  157. }
  158. //---------------------------------------------------------------------------
  159. void __fastcall TFullSynchronizeDialog::FormCloseQuery(TObject * /*Sender*/,
  160. bool & CanClose)
  161. {
  162. if (ModalResult != mrCancel)
  163. {
  164. AnsiString Dir = LocalDirectoryEdit->Text;
  165. AnsiString Drive = ExtractFileDrive(Dir);
  166. if (Drive.IsEmpty() || (Drive.Length() != 2) || (Drive[2] != ':'))
  167. {
  168. LocalDirectoryEdit->SetFocus();
  169. LocalDirectoryEdit->SelectAll();
  170. SimpleErrorDialog(LoadStr(ABSOLUTE_PATH_REQUIRED));
  171. CanClose = false;
  172. }
  173. }
  174. }
  175. //---------------------------------------------------------------------------
  176. void __fastcall TFullSynchronizeDialog::SetSaveSettings(bool value)
  177. {
  178. SaveSettingsCheck->Checked = value;
  179. }
  180. //---------------------------------------------------------------------------
  181. bool __fastcall TFullSynchronizeDialog::GetSaveSettings()
  182. {
  183. return SaveSettingsCheck->Checked;
  184. }