diff --git a/lcl/interfaces/qt/qtlclintf.inc b/lcl/interfaces/qt/qtlclintf.inc index a7c262404f..ba7dbc3109 100644 --- a/lcl/interfaces/qt/qtlclintf.inc +++ b/lcl/interfaces/qt/qtlclintf.inc @@ -62,4 +62,78 @@ begin Desc.AlphaShift := 0; end; +function TQtWidgetSet.PromptUser(const DialogCaption : string; + const DialogMessage : string; + DialogType : LongInt; + Buttons : PLongInt; + ButtonCount : LongInt; + DefaultIndex : LongInt; + EscapeResult : LongInt) : LongInt; + {Note: Qt appears to map Esc key to Cancel button, so no need for EscapeResult.} +var + QBtns : QMessageBoxStandardButtons; + DefQBtn : QMessageBoxStandardButton; + CurQBtn : QMessageBoxStandardButton; + BtnIdx : LongInt; + CaptionStr : WideString; + MessageStr : WideString; + QResult : QMessageBoxStandardButton; +begin + QBtns := 0; + DefQBtn := QMessageBoxNoButton; + {Convert LCL "id" button values to Qt values} + for BtnIdx := 0 to ButtonCount-1 do + begin + case Buttons[BtnIdx] of + idButtonYes : CurQBtn := QMessageBoxYes; + idButtonNo : CurQBtn := QMessageBoxNo; + idButtonOK : CurQBtn := QMessageBoxOk; + idButtonCancel : CurQBtn := QMessageBoxCancel; + idButtonAbort : CurQBtn := QMessageBoxAbort; + idButtonRetry : CurQBtn := QMessageBoxRetry; + idButtonIgnore : CurQBtn := QMessageBoxIgnore; +// idButtonAll : no equivalent + idButtonNoToAll : CurQBtn := QMessageBoxNoToAll; + idButtonYesToAll : CurQBtn := QMessageBoxYesToAll; + idButtonHelp : CurQBtn := QMessageBoxHelp; + idButtonClose : CurQBtn := QMessageBoxClose; + else + CurQBtn := QMessageBoxNoButton; + end; + QBtns := QBtns or CurQBtn; + if BtnIdx = DefaultIndex then {Default button?} + DefQBtn := CurQBtn; + end; + + CaptionStr := DialogCaption; + MessageStr := DialogMessage; + + case DialogType of + idDialogWarning : + QResult := QMessageBox_warning(nil, @CaptionStr, @MessageStr, QBtns, DefQBtn); + idDialogError : + QResult := QMessageBox_critical(nil, @CaptionStr, @MessageStr, QBtns, DefQBtn); + idDialogInfo : + QResult := QMessageBox_information(nil, @CaptionStr, @MessageStr, QBtns, DefQBtn); + idDialogConfirm : + QResult := QMessageBox_question(nil, @CaptionStr, @MessageStr, QBtns, DefQBtn); + end; + + {Convert Qt result to LCL "id" dialog result} + case QResult of + QMessageBoxOk : Result := idButtonOK; + QMessageBoxCancel : Result := idButtonCancel; + QMessageBoxAbort : Result := idButtonAbort; + QMessageBoxRetry : Result := idButtonRetry; + QMessageBoxIgnore : Result := idButtonIgnore; + QMessageBoxYes : Result := idButtonYes; + QMessageBoxNo : Result := idButtonNo; +// QMessageBoxAll : no equivalent + QMessageBoxNoToAll : Result := idButtonNoToAll; + QMessageBoxYesToAll : Result := idButtonYesToAll; + else + Result := -1; + end; +end; {TQtWidgetSet.PromptUser} + //##apiwiz##eps## // Do not remove, no wizard declaration after this line diff --git a/lcl/interfaces/qt/qtlclintfh.inc b/lcl/interfaces/qt/qtlclintfh.inc index 40cd9b2cb1..e6a95fa90d 100644 --- a/lcl/interfaces/qt/qtlclintfh.inc +++ b/lcl/interfaces/qt/qtlclintfh.inc @@ -32,4 +32,12 @@ procedure FillStandardDescription(var Desc: TRawImageDescription); +function PromptUser(const DialogCaption : string; + const DialogMessage : string; + DialogType : LongInt; + Buttons : PLongInt; + ButtonCount : LongInt; + DefaultIndex : LongInt; + EscapeResult : LongInt) : LongInt; override; + //##apiwiz##eps## // Do not remove, no wizard declaration after this line