ADD: refactor FileSource - step 3: move fsoMove logic into TSearchResultFileSourceProcessor (from fMain)

This commit is contained in:
rich2014 2024-12-01 00:12:53 +08:00
commit 7d664ad53c

View file

@ -7,7 +7,9 @@ interface
uses
Classes, SysUtils,
uFile,
uFileSource, uFileSourceManager,
uMultiListFileSource,
uFileSourceOperationTypes,
uFileSourceOperation,
uFileSourceProperty;
@ -25,6 +27,7 @@ type
TSearchResultFileSource = class(TMultiListFileSource, ISearchResultFileSource)
public
function GetProcessor: TFileSourceProcessor; override;
function GetRootDir(sPath : String): String; override;
function GetProperties: TFileSourceProperties; override;
@ -42,6 +45,40 @@ implementation
uses
uFileSystemFileSource, uSearchResultListOperation, uLng;
type
{ TSearchResultFileSourceProcessor }
TSearchResultFileSourceProcessor = class( TDefaultFileSourceProcessor )
procedure consultBeforeOperate( var params: TFileSourceConsultParams ); override;
end;
var
searchResultFileSourceProcessor: TSearchResultFileSourceProcessor;
procedure TSearchResultFileSourceProcessor.consultBeforeOperate( var params: TFileSourceConsultParams);
procedure process;
var
searchResultFS: ISearchResultFileSource;
begin
if params.operationType <> fsoMove then
Exit;
if params.currentFS <> params.sourceFS then
Exit;
searchResultFS:= params.currentFS as ISearchResultFileSource;
params.sourceFS:= searchResultFS.FileSource;
end;
begin
process;
Inherited;
end;
function TSearchResultFileSource.GetProcessor: TFileSourceProcessor;
begin
Result:= searchResultFileSourceProcessor;
end;
function TSearchResultFileSource.GetRootDir(sPath: String): String;
begin
Result:= PathDelim + PathDelim + PathDelim + rsSearchResult + PathDelim;
@ -77,5 +114,11 @@ begin
Result:= True;
end;
initialization
searchResultFileSourceProcessor:= TSearchResultFileSourceProcessor.Create;
finalization
FreeAndNil( searchResultFileSourceProcessor );
end.