| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 | 
							- //---------------------------------------------------------------------
 
- #include <vcl.h>
 
- #pragma hdrstop
 
- #include <Common.h>
 
- #include <VCLCommon.h>
 
- #include <CoreMain.h>
 
- #include <WinConfiguration.h>
 
- #include <TextsWin.h>
 
- #include <HelpWin.h>
 
- #include <PuttyTools.h>
 
- #include "Cleanup.h"
 
- //---------------------------------------------------------------------
 
- #pragma resource "*.dfm"
 
- //---------------------------------------------------------------------
 
- bool __fastcall DoCleanupDialog()
 
- {
 
-   std::unique_ptr<TCleanupDialog> CleanupDialog(SafeFormCreate<TCleanupDialog>());
 
-   return CleanupDialog->Execute();
 
- }
 
- //---------------------------------------------------------------------
 
- void __fastcall DoCleanupDialogIfAnyDataAndWanted()
 
- {
 
-   std::unique_ptr<TCleanupDialog> CleanupDialog(SafeFormCreate<TCleanupDialog>());
 
-   if (CleanupDialog->AnyData() &&
 
-       (MessageDialog(LoadStr(UNINSTALL_CLEANUP), qtConfirmation, qaYes | qaNo, HELP_UNINSTALL_CLEANUP) == qaYes))
 
-   {
 
-     CleanupDialog->Execute();
 
-   }
 
- }
 
- //---------------------------------------------------------------------
 
- __fastcall TCleanupDialog::TCleanupDialog(TComponent* AOwner)
 
-   : TForm(AOwner)
 
- {
 
-   FAnyData = false;
 
-   FindData();
 
-   UseSystemSettings(this);
 
- }
 
- //---------------------------------------------------------------------
 
- void __fastcall TCleanupDialog::AddLocation(int CaptionId, const UnicodeString & Location, TCleanupEvent Event)
 
- {
 
-   FCaptions.push_back(LoadStr(CaptionId));
 
-   FLocations.push_back(Location);
 
-   FCleanupEvents.push_back(Event);
 
-   FAnyData = true;
 
- }
 
- //---------------------------------------------------------------------
 
- void __fastcall TCleanupDialog::AddRegistryLocation(int CaptionId, const UnicodeString & Location, TCleanupEvent Event)
 
- {
 
-   AddLocation(CaptionId, Configuration->RootKeyStr + L'\\' + Configuration->RegistryStorageKey + L'\\' + Location, Event);
 
- }
 
- //---------------------------------------------------------------------
 
- bool __fastcall TCleanupDialog::AnyData()
 
- {
 
-   return FAnyData;
 
- }
 
- //---------------------------------------------------------------------
 
- void __fastcall TCleanupDialog::FindData()
 
- {
 
-   // Add unconditionally (as it has a side effect of not saving the configuration)
 
-   AddRegistryLocation(CLEANUP_CONFIG, Configuration->ConfigurationSubKey, Configuration->CleanupConfiguration);
 
-   // But count as real data, only if it really exists
 
-   FAnyData = Configuration->RegistryPathExists(Configuration->ConfigurationSubKey);
 
-   if (Configuration->RegistryPathExists(Configuration->StoredSessionsSubKey))
 
-   {
 
-     AddRegistryLocation(CLEANUP_SESSIONS, Configuration->StoredSessionsSubKey, StoredSessions->Cleanup);
 
-   }
 
-   if (Configuration->HasAnyCache())
 
-   {
 
-     AddRegistryLocation(CLEANUP_CACHES, L"...", Configuration->CleanupCaches);
 
-   }
 
-   UnicodeString IniFilePath = ExpandEnvironmentVariables(Configuration->IniFileStorageNameForReading);
 
-   if (FileExists(IniFilePath))
 
-   {
 
-     AddLocation(CLEANUP_INIFILE, IniFilePath, Configuration->CleanupIniFile);
 
-   }
 
-   if (RandomSeedExists())
 
-   {
 
-     AddLocation(CLEANUP_SEEDFILE, Configuration->RandomSeedFileName, Configuration->CleanupRandomSeedFile);
 
-   }
 
-   if (WinConfiguration->AnyTemporaryFolders())
 
-   {
 
-     AddLocation(CLEANUP_TEMP_FOLDERS, WinConfiguration->TemporaryDir(true), WinConfiguration->CleanupTemporaryFolders);
 
-   }
 
- }
 
- //---------------------------------------------------------------------
 
- void __fastcall TCleanupDialog::InitControls()
 
- {
 
-   DebugAssert(FCaptions.size() == FLocations.size());
 
-   DebugAssert(FCaptions.size() == FCleanupEvents.size());
 
-   // Particularly in response to WM_DPICHANGED, the form may re-show
 
-   DataListView->Items->Clear();
 
-   for (size_t Index = 0; Index < FCaptions.size(); Index++)
 
-   {
 
-     TListItem * Item = DataListView->Items->Add();
 
-     Item->Caption = FCaptions[Index];
 
-     Item->SubItems->Add(FLocations[Index]);
 
-   }
 
-   AutoSizeListColumnsWidth(DataListView);
 
- }
 
- //---------------------------------------------------------------------
 
- void __fastcall TCleanupDialog::UpdateControls()
 
- {
 
-   EnableControl(OKButton, ListViewAnyChecked(DataListView));
 
- }
 
- //---------------------------------------------------------------------------
 
- void __fastcall TCleanupDialog::DataListViewMouseDown(
 
-       TObject * /*Sender*/, TMouseButton /*Button*/, TShiftState /*Shift*/,
 
-       int /*X*/, int /*Y*/)
 
- {
 
-   UpdateControls();
 
- }
 
- //---------------------------------------------------------------------------
 
- void __fastcall TCleanupDialog::DataListViewKeyUp(
 
-       TObject * /*Sender*/, WORD & /*Key*/, TShiftState /*Shift*/)
 
- {
 
-   UpdateControls();
 
- }
 
- //---------------------------------------------------------------------------
 
- void __fastcall TCleanupDialog::FormShow(TObject * /*Sender*/)
 
- {
 
-   InitControls();
 
-   UpdateControls();
 
- }
 
- //---------------------------------------------------------------------------
 
- void __fastcall TCleanupDialog::CheckAllButtonClick(TObject * /*Sender*/)
 
- {
 
-   ListViewCheckAll(DataListView, caToggle);
 
-   UpdateControls();
 
- }
 
- //---------------------------------------------------------------------------
 
- void __fastcall TCleanupDialog::DataListViewInfoTip(TObject * /*Sender*/,
 
-       TListItem * Item, UnicodeString & InfoTip)
 
- {
 
-   InfoTip = Format(L"%s\nLocation: %s",
 
-     ARRAYOFCONST((Item->Caption, Item->SubItems->Strings[0])));
 
- }
 
- //---------------------------------------------------------------------------
 
- void __fastcall TCleanupDialog::HelpButtonClick(TObject * /*Sender*/)
 
- {
 
-   FormHelp(this);
 
- }
 
- //---------------------------------------------------------------------------
 
- bool __fastcall TCleanupDialog::Execute()
 
- {
 
-   bool Result = (ShowModal() == DefaultResult(this));
 
-   if (Result)
 
-   {
 
-     Configuration->Usage->Inc(L"Cleanups");
 
-     for (int Index = 0; Index < DataListView->Items->Count; Index++)
 
-     {
 
-       if (DataListView->Items->Item[Index]->Checked)
 
-       {
 
-         try
 
-         {
 
-           FCleanupEvents[Index]();
 
-         }
 
-         catch (Exception & E)
 
-         {
 
-           ShowExtendedException(&E);
 
-         }
 
-       }
 
-     }
 
-   }
 
-   return Result;
 
- }
 
- //---------------------------------------------------------------------------
 
 
  |