From b2f8a1f1a9408b674a06e34c140f58a9ae109360 Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Sat, 3 Oct 2009 18:48:42 +0200 Subject: Remember custom plugin from Quick Connect dialog and pre-fill it in Connection Properties dialog when saving unsaved connection --- UMain.pas | 5 +++++ UQuickConnect.pas | 1 + vfs/UVFSCore.pas | 11 +++++++++++ 3 files changed, 17 insertions(+) diff --git a/UMain.pas b/UMain.pas index 2e1371a..b018eae 100644 --- a/UMain.pas +++ b/UMain.pas @@ -6066,6 +6066,7 @@ var Buttons: TMessageButtons; AFConnectionProperties: TFConnectionProperties; URI: string; ConnMgrItem: TConnMgrItem; + i: integer; begin Result := True; URI := Engine.GetPathURI; @@ -6081,6 +6082,10 @@ begin AFConnectionProperties := TFConnectionProperties.Create(Self); try AFConnectionProperties.URIEntry.Text := URI; + if (Engine.CustomPluginIDSave <> '') and (AFConnectionProperties.PluginOptionMenu.Items.Count > 0) then + for i := 0 to PluginList.Count - 1 do + if TVFSPlugin(PluginList[i]).VFSName = Engine.CustomPluginIDSave + then AFConnectionProperties.PluginOptionMenu.ItemIndex := i + 1; if AFConnectionProperties.Run = mbOK then begin ReadConnections; ConnMgrItem := TConnMgrItem.Create; diff --git a/UQuickConnect.pas b/UQuickConnect.pas index aaaa0bf..8234edd 100644 --- a/UQuickConnect.pas +++ b/UQuickConnect.pas @@ -320,6 +320,7 @@ begin Engine.ParentEngine := SourcePanelEngine; Engine.SavePath := SourcePanelEngine.Path; Engine.OpenedFromQuickConnect := True; + Engine.CustomPluginIDSave := ConfQuickConnectPluginID; if not AFConnectionManager.DoConnectInternal(URIComboBox.Entry.Text, Engine, FWidget) then begin if not AFConnectionManager.FSilenceError then Application.MessageBox(PGtkWindow(FWidget), LANGCouldntOpenURI, [mbOK], mbError, mbOK, mbOK); diff --git a/vfs/UVFSCore.pas b/vfs/UVFSCore.pas index aaa3b49..7c85b02 100644 --- a/vfs/UVFSCore.pas +++ b/vfs/UVFSCore.pas @@ -89,12 +89,14 @@ type FSourcePlugin: TVFSPlugin; FBlockSize: Cardinal; BreakProcessingKind: integer; + function GetPluginID: string; public ArchiveMode: boolean; Password: string; PasswordUsed: boolean; RemoveFileOnClose: string; OpenedFromQuickConnect: boolean; + CustomPluginIDSave: string; constructor Create(SourcePlugin: TVFSPlugin); function VFSOpenURI(URI: string; AskQuestionCallback: PVFSAskQuestionCallback; AskPasswordCallback: PVFSAskPasswordCallback; ProgressCallback: PVFSProgressCallback; CallbackData: Pointer): boolean; function VFSOpenEx(OpenFile: string; AskQuestionCallback: PVFSAskQuestionCallback; AskPasswordCallback: PVFSAskPasswordCallback; ProgressCallback: PVFSProgressCallback; CallbackData: Pointer): TVFSResult; @@ -152,6 +154,7 @@ type published property Path: string read GetPath write SetPath; property BlockSize: Cardinal read GetBlockSize write SetBlockSize; + property PluginID: string read GetPluginID; end; @@ -304,6 +307,7 @@ begin PasswordUsed := False; RemoveFileOnClose := ''; OpenedFromQuickConnect := False; + CustomPluginIDSave := ''; if @FSourcePlugin.FVFSNew <> nil then FGlobs := FSourcePlugin.FVFSNew(@VFSLogFunc); end; @@ -955,6 +959,13 @@ begin FSourcePlugin.FVFSResetPassword(FGlobs); end; +(********************************************************************************************************************************) +(********************************************************************************************************************************) +function TVFSEngine.GetPluginID: string; +begin + if FSourcePlugin <> nil then Result := FSourcePlugin.VFSName + else Result := ''; +end; (********************************************************************************************************************************) (********************************************************************************************************************************) -- cgit v1.2.3