| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 | //---------------------------------------------------------------------#include <vcl.h>#pragma hdrstop#include <Common.h>#include <VCLCommon.h>#include <WinConfiguration.h>#include <TextsWin.h>#include "Cleanup.h"//---------------------------------------------------------------------#ifndef NO_RESOURCES#pragma resource "*.dfm"#endif//---------------------------------------------------------------------Boolean __fastcall DoCleanupDialog(TStoredSessionList *SessionList,  TConfiguration *Configuration){  Boolean Result;  TCleanupDialog *CleanupDialog;  try {    CleanupDialog = SafeFormCreate<TCleanupDialog>();    CleanupDialog->SessionList = SessionList;    CleanupDialog->Configuration = Configuration;    Result = (CleanupDialog->ShowModal() == DefaultResult(CleanupDialog));    if (Result)    {      Configuration->Usage->Inc(L"Cleanups");      for (int i = wdConfiguration; i <= wdTemporaryFolders; i++)      {        if (CleanupDialog->CleanupData[(TWinSCPData)i])        {          try          {            switch (i)            {              case wdConfiguration:                Configuration->CleanupConfiguration();                break;              case wdStoredSessions:                SessionList->Cleanup();                break;              case wdHostKeys:                Configuration->CleanupHostKeys();                break;              case wdConfigurationIniFile:                Configuration->CleanupIniFile();                break;              case wdRandomSeedFile:                Configuration->CleanupRandomSeedFile();                break;              case wdTemporaryFolders:                WinConfiguration->CleanupTemporaryFolders();                break;            }          }          catch(Exception & E)          {            ShowExtendedException(&E);          }        }      }    }  } __finally {    delete CleanupDialog;  }  return Result;}//---------------------------------------------------------------------__fastcall TCleanupDialog::TCleanupDialog(TComponent* AOwner)  : TForm(AOwner){  UseSystemSettings(this);}//---------------------------------------------------------------------void __fastcall TCleanupDialog::InitControls(){  // Particularly in response to WM_DPICHANGED, the form may re-show  DataListView->Items->Clear();  for (int i = wdConfiguration; i <= wdTemporaryFolders; i++)  {    UnicodeString Caption;    UnicodeString Location;    switch (i)    {      case wdConfiguration:        Caption = LoadStr(CLEANUP_CONFIG);        Location = Configuration->ConfigurationSubKey;        break;      case wdStoredSessions:        Caption = LoadStr(CLEANUP_SESSIONS);        Location = Configuration->StoredSessionsSubKey;        break;      case wdHostKeys:        Caption = LoadStr(CLEANUP_HOSTKEYS);        Location = Configuration->SshHostKeysSubKey;        break;      case wdConfigurationIniFile:        Caption = LoadStr(CLEANUP_INIFILE);        Location = ExpandEnvironmentVariables(Configuration->IniFileStorageNameForReading);        break;      case wdRandomSeedFile:        Caption = LoadStr(CLEANUP_SEEDFILE);        Location = ExpandEnvironmentVariables(Configuration->RandomSeedFile);        break;      case wdTemporaryFolders:        Caption = LoadStr(CLEANUP_TEMP_FOLDERS);        Location = WinConfiguration->TemporaryDir(true);        break;      default:        DebugFail();        break;    }    TListItem * Item = DataListView->Items->Add();    Item->Caption = Caption;    if (i < wdConfigurationIniFile)    {      Location = Configuration->RootKeyStr + L'\\' +        Configuration->RegistryStorageKey + L'\\' + Location;    }    Item->SubItems->Add(Location);    DebugAssert(Item->Index == i - 1);  }  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])));}//---------------------------------------------------------------------------bool __fastcall TCleanupDialog::GetCleanupData(TWinSCPData Data){  return DataListView->Items->Item[Data - 1]->Checked;}//---------------------------------------------------------------------------void __fastcall TCleanupDialog::HelpButtonClick(TObject * /*Sender*/){  FormHelp(this);}//---------------------------------------------------------------------------
 |