SynchronizeProgress.cpp 4.1 KB

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