From 4cdfa1d463b2f33436aea8f1ca8a4f75f5938ddf Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Sun, 13 Dec 2009 20:20:55 +0100 Subject: Consolidate ProcessProgressThread, make it more universal --- UConnectionManager.pas | 37 ++++++------------------------------- 1 file changed, 6 insertions(+), 31 deletions(-) (limited to 'UConnectionManager.pas') diff --git a/UConnectionManager.pas b/UConnectionManager.pas index 7109cc3..d1f79e2 100644 --- a/UConnectionManager.pas +++ b/UConnectionManager.pas @@ -66,7 +66,7 @@ type Thread: TOpenConnectionThread; SourcePanelEngine: TPanelEngine; ConnectedEngine: TVFSEngine; - function DoConnectInternal(const URI: string; Engine: TVFSEngine; VFSDialogsParentWindow: PGtkWidget; VFSQuickConnectMode: boolean; Error: PPGError): boolean; + function DoConnectInternal(const URI: string; Engine: TVFSEngine; ParentForm: TCustomGTKForm; VFSQuickConnectMode: boolean; Error: PPGError): boolean; end; var @@ -601,7 +601,7 @@ begin Engine.PasswordUsed := False; Error := nil; - if not DoConnectInternal(UTF8ToStr(FActiveConnInfo.GetURI(False)), Engine, FWidget, False, @Error) then begin + if not DoConnectInternal(UTF8ToStr(FActiveConnInfo.GetURI(False)), Engine, Self, False, @Error) then begin if not FSilenceError then ShowError(Self, 'Couldn''t open the URI specified', Error); ListViewTable.Enabled := True; @@ -624,44 +624,19 @@ begin ModalResult := mbOK; end; -function TFConnectionManager.DoConnectInternal(const URI: string; Engine: TVFSEngine; VFSDialogsParentWindow: PGtkWidget; VFSQuickConnectMode: boolean; Error: PPGError): boolean; +function TFConnectionManager.DoConnectInternal(const URI: string; Engine: TVFSEngine; ParentForm: TCustomGTKForm; VFSQuickConnectMode: boolean; Error: PPGError): boolean; begin Result := False; FSilenceError := False; Thread := TOpenConnectionThread.Create; try - Thread.VFSConnectionManagerMode := VFSDialogsParentWindow = FWidget; + Thread.VFSConnectionManagerMode := ParentForm = Self; Thread.VFSQuickConnectMode := VFSQuickConnectMode; - Thread.VFSDialogsParentWindow := VFSDialogsParentWindow; + Thread.DialogsParentWindow := ParentForm; Thread.AEngine := Engine; Thread.URI := URI; Thread.Resume; - repeat - Sleep(ConstInternalProgressTimer); - Application.ProcessMessages; - if Thread.VFSAskQuestion_Display then begin - Thread.VFSAskQuestion_Display := False; - DebugMsg(['Main thread: displaying question dialog']); - HandleVFSAskQuestionCallback(FWidget, Thread.VFSAskQuestion_Message, Thread.VFSAskQuestion_Choices, Thread.VFSAskQuestion_Choice); - Thread.VFSCallbackEvent.SetEvent; - end; - if Thread.VFSAskPassword_Display then begin - Thread.VFSAskPassword_Display := False; - DebugMsg(['Main thread: displaying password prompt']); - Thread.VFSAskPassword_Result := HandleVFSAskPasswordCallback(FWidget, - Thread.VFSAskPassword_Message, - Thread.VFSAskPassword_default_user, - Thread.VFSAskPassword_default_domain, - Thread.VFSAskPassword_default_password, - Thread.VFSAskPassword_flags, - Thread.VFSAskPassword_username, - Thread.VFSAskPassword_password, - Thread.VFSAskPassword_anonymous, - Thread.VFSAskPassword_domain, - Thread.VFSAskPassword_password_save); - Thread.VFSCallbackEvent.SetEvent; - end; - until Thread.Finished; + ProcessThreadEvents(Thread); Result := Thread.OpenResult; if Thread.OpenError <> nil then g_propagate_error(Error, Thread.OpenError); -- cgit v1.2.3