From 10b357dce6e32a405c6f2b7a035a947fb53bceb5 Mon Sep 17 00:00:00 2001 From: paul Date: Thu, 20 Sep 2007 14:13:49 +0000 Subject: [PATCH] Qt: - fix multiselect option in FileDialog - fix multiply extension for one filter option git-svn-id: trunk@12091 - --- lcl/interfaces/qt/qtwsdialogs.pp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/lcl/interfaces/qt/qtwsdialogs.pp b/lcl/interfaces/qt/qtwsdialogs.pp index 2b522fe0d9..8f45d1496a 100644 --- a/lcl/interfaces/qt/qtwsdialogs.pp +++ b/lcl/interfaces/qt/qtwsdialogs.pp @@ -173,6 +173,13 @@ end; { TQtWSFileDialog } class function TQtWSFileDialog.GetQtFilterString(const AFileDialog: TFileDialog): WideString; + + function GetExtensionString(ASource: String; AStart, ALength: Integer): String; inline; + begin + // replace *.ext1, *.ext2 by *.ext1 *.ext2 + Result := '(' + StringReplace(Copy(ASource, AStart, ALength), ',', ' ', [rfReplaceAll]) + ')'; + end; + var TmpFilter, strExtensions: string; ParserState, Position, i: Integer; @@ -220,7 +227,7 @@ begin else if ParserState = 2 then begin - strExtensions := '(' + Copy(AFileDialog.Filter, Position, i - Position) + ')'; + strExtensions := GetExtensionString(AFileDialog.Filter, Position, i - Position); if Pos(strExtensions, TmpFilter) = 0 then TmpFilter := TmpFilter + ' ' + strExtensions; @@ -235,7 +242,7 @@ begin end; end; - strExtensions := '(' + Copy(AFileDialog.Filter, Position, i + 1 - Position) + ')'; + strExtensions := GetExtensionString(AFileDialog.Filter, Position, i + 1 - Position); if Pos(strExtensions, TmpFilter) = 0 then TmpFilter := TmpFilter + ' ' + strExtensions; @@ -260,15 +267,14 @@ begin else QtFileDialog.setViewMode(QFileDialogList); + if ofAllowMultiSelect in TOpenDialog(AFileDialog).Options then + QtFileDialog.setFileMode(QFileDialogExistingFiles) + else if ofFileMustExist in TOpenDialog(AFileDialog).Options then - begin - if ofAllowMultiSelect in TOpenDialog(AFileDialog).Options then - QtFileDialog.setFileMode(QFileDialogExistingFiles) - else - QtFileDialog.setFileMode(QFileDialogExistingFile) - end + QtFileDialog.setFileMode(QFileDialogExistingFile) else QtFileDialog.setFileMode(QFileDialogAnyFile); + QtFileDialog.setLabelText(QFileDialogFileName, GetUtf8String(AFileDialog.FileName)); end;