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);
- }
- //---------------------------------------------------------------------------
|