SynchronizeProgress.cpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include <WinInterface.h>
  5. #include "SynchronizeProgress.h"
  6. #include <Common.h>
  7. #include <Configuration.h>
  8. #include <CoreMain.h>
  9. #include <TextsWin.h>
  10. #include <VCLCommon.h>
  11. #include <GUITools.h>
  12. //---------------------------------------------------------------------------
  13. #pragma package(smart_init)
  14. #pragma link "PathLabel"
  15. #ifndef NO_RESOURCES
  16. #pragma resource "*.dfm"
  17. #endif
  18. //---------------------------------------------------------------------------
  19. __fastcall TSynchronizeProgressForm::TSynchronizeProgressForm(TComponent * Owner,
  20. bool AllowMinimize, bool CompareOnly)
  21. : TForm(Owner)
  22. {
  23. FStarted = false;
  24. FCanceled = false;
  25. FElapsed = EncodeTimeVerbose(0, 0, 0, 0);
  26. FShowAsModalStorage = NULL;
  27. FMinimizedByMe = false;
  28. FCompareOnly = CompareOnly;
  29. UseSystemSettings(this);
  30. if (!AllowMinimize)
  31. {
  32. CancelButton->Left = CancelButton->Left +
  33. (MinimizeButton->Left - CancelButton->Left) / 2;
  34. MinimizeButton->Visible = false;
  35. }
  36. else
  37. {
  38. if (!IsGlobalMinimizeHandler())
  39. {
  40. SetGlobalMinimizeHandler(GlobalMinimize);
  41. };
  42. }
  43. }
  44. //---------------------------------------------------------------------------
  45. __fastcall TSynchronizeProgressForm::~TSynchronizeProgressForm()
  46. {
  47. if (GetGlobalMinimizeHandler() == GlobalMinimize)
  48. {
  49. SetGlobalMinimizeHandler(NULL);
  50. }
  51. ReleaseAsModal(this, FShowAsModalStorage);
  52. if (IsIconic(Application->Handle) && FMinimizedByMe)
  53. {
  54. ShowNotification(NULL, LoadStr(BALLOON_OPERATION_COMPLETE), qtInformation);
  55. }
  56. }
  57. //---------------------------------------------------------------------------
  58. void __fastcall TSynchronizeProgressForm::Start()
  59. {
  60. FStarted = true;
  61. FStartTime = Now();
  62. UpdateTimer->Enabled = true;
  63. StartTimeLabel->Caption = FStartTime.TimeString();
  64. Caption = LoadStr(FCompareOnly ? SYNCHRONIZE_PROGRESS_COMPARE : SYNCHRONIZE_PROGRESS_SYNCHRONIZE);
  65. ShowAsModal(this, FShowAsModalStorage);
  66. }
  67. //---------------------------------------------------------------------------
  68. void __fastcall TSynchronizeProgressForm::Stop()
  69. {
  70. HideAsModal(this, FShowAsModalStorage);
  71. FStarted = false;
  72. UpdateTimer->Enabled = false;
  73. }
  74. //---------------------------------------------------------------------------
  75. void __fastcall TSynchronizeProgressForm::SetData(const AnsiString LocalDirectory,
  76. const AnsiString RemoteDirectory, bool & Continue)
  77. {
  78. assert(FStarted);
  79. LocalDirectoryLabel->Caption = LocalDirectory;
  80. RemoteDirectoryLabel->Caption = RemoteDirectory;
  81. Continue = !FCanceled;
  82. UpdateControls();
  83. Application->ProcessMessages();
  84. }
  85. //---------------------------------------------------------------------------
  86. void __fastcall TSynchronizeProgressForm::UpdateControls()
  87. {
  88. if (FStarted)
  89. {
  90. FElapsed = Now() - FStartTime;
  91. }
  92. TimeElapsedLabel->Caption = FormatDateTimeSpan(Configuration->TimeFormat, FElapsed);
  93. }
  94. //---------------------------------------------------------------------------
  95. void __fastcall TSynchronizeProgressForm::CancelButtonClick(TObject * /*Sender*/)
  96. {
  97. if (!FCanceled && (MessageDialog(LoadStr(CANCEL_OPERATION), qtConfirmation,
  98. qaOK | qaCancel, HELP_NONE) == qaOK))
  99. {
  100. FCanceled = true;
  101. }
  102. }
  103. //---------------------------------------------------------------------------
  104. void __fastcall TSynchronizeProgressForm::UpdateTimerTimer(TObject * /*Sender*/)
  105. {
  106. UpdateControls();
  107. }
  108. //---------------------------------------------------------------------------
  109. void __fastcall TSynchronizeProgressForm::MinimizeButtonClick(
  110. TObject * Sender)
  111. {
  112. GetGlobalMinimizeHandler()(Sender);
  113. }
  114. //---------------------------------------------------------------------------
  115. void __fastcall TSynchronizeProgressForm::GlobalMinimize(TObject * /*Sender*/)
  116. {
  117. MinimizeApp();
  118. }
  119. //---------------------------------------------------------------------------
  120. void __fastcall TSynchronizeProgressForm::MinimizeApp()
  121. {
  122. Application->Minimize();
  123. FMinimizedByMe = true;
  124. }
  125. //---------------------------------------------------------------------------