Browse Source

fix dialogs close messages and quick closing

pull/2/head
Skycoder42 7 years ago
parent
commit
bb5cdb7829
No known key found for this signature in database GPG Key ID: 8E01AD9EF0578D2B
  1. 11
      src/imports/mvvmquick/MsgBoxBase.qml
  2. 10
      src/imports/mvvmquick/ProgressDialog.qml
  3. 5
      src/mvvmwidgets/widgetspresenter.cpp

11
src/imports/mvvmquick/MsgBoxBase.qml

@ -46,9 +46,14 @@ AlertDialog {
} }
} }
footer: DialogButtonBox { footer: Item {
id: _btnBox
visible: msgConfig.buttons !== MessageConfig.NoButton visible: msgConfig.buttons !== MessageConfig.NoButton
implicitWidth: _btnBox.implicitWidth
implicitHeight: _btnBox.implicitHeight
DialogButtonBox {
id: _btnBox
anchors.fill: parent
readonly property var _allBtns: [ readonly property var _allBtns: [
DialogButtonBox.NoButton, DialogButtonBox.NoButton,
@ -86,11 +91,13 @@ AlertDialog {
if(button === standardButton(sBtn)) { if(button === standardButton(sBtn)) {
msgResult.complete(sBtn); msgResult.complete(sBtn);
msgResult = null; msgResult = null;
_msgBoxBase.done(sBtn);
} }
}); });
} }
} }
} }
}
onClosed: { onClosed: {
if(msgResult && autoHandleBtns) { if(msgResult && autoHandleBtns) {

10
src/imports/mvvmquick/ProgressDialog.qml

@ -17,16 +17,6 @@ MsgBoxBase {
readonly property bool _allowClose: !progressControl || !msgResult readonly property bool _allowClose: !progressControl || !msgResult
onButtonClicked: tryCancel(button) onButtonClicked: tryCancel(button)
onAboutToHide: { //TODO find a way to NOT auto react on button presses... better that this solution
var closeFn = function(){
if(!_allowClose)
_progressDialog.visible = true;
};
if(QuickPresenter.currentStyle == "Material")
Qt.callLater(closeFn);
else
closeFn();
}
Component.onCompleted: { Component.onCompleted: {
if(msgResult) if(msgResult)

5
src/mvvmwidgets/widgetspresenter.cpp

@ -302,6 +302,7 @@ void WidgetsPresenter::presentMessageBox(const MessageConfig &config, QPointer<M
//create and show the msgbox //create and show the msgbox
auto msgBox = DialogMaster::createMessageBox(info); auto msgBox = DialogMaster::createMessageBox(info);
msgBox->setAttribute(Qt::WA_DeleteOnClose); msgBox->setAttribute(Qt::WA_DeleteOnClose);
result->setCloseTarget(msgBox, QStringLiteral("reject()"));
connect(msgBox, &QMessageBox::finished, connect(msgBox, &QMessageBox::finished,
result, [msgBox, qtHelp, checked, result](){ result, [msgBox, qtHelp, checked, result](){
int sBtn = msgBox->standardButton(msgBox->clickedButton()); int sBtn = msgBox->standardButton(msgBox->clickedButton());
@ -324,6 +325,7 @@ void WidgetsPresenter::presentInputDialog(const MessageConfig &config, QPointer<
parent = QApplication::activeWindow(); parent = QApplication::activeWindow();
auto dialog = new QDialog(parent); auto dialog = new QDialog(parent);
dialog->setAttribute(Qt::WA_DeleteOnClose); dialog->setAttribute(Qt::WA_DeleteOnClose);
result->setCloseTarget(dialog, QStringLiteral("reject()"));
auto layout = new QVBoxLayout(dialog); auto layout = new QVBoxLayout(dialog);
dialog->setLayout(layout); dialog->setLayout(layout);
@ -383,6 +385,7 @@ void WidgetsPresenter::presentFileDialog(const MessageConfig &config, QPointer<M
parent = QApplication::activeWindow(); parent = QApplication::activeWindow();
auto dialog = new QFileDialog(parent); auto dialog = new QFileDialog(parent);
dialog->setAttribute(Qt::WA_DeleteOnClose); dialog->setAttribute(Qt::WA_DeleteOnClose);
result->setCloseTarget(dialog, QStringLiteral("reject()"));
//prepare the dialog //prepare the dialog
auto title = config.title(); auto title = config.title();
@ -443,6 +446,7 @@ void WidgetsPresenter::presentColorDialog(const MessageConfig &config, const QPo
parent = QApplication::activeWindow(); parent = QApplication::activeWindow();
auto dialog = new QColorDialog{parent}; auto dialog = new QColorDialog{parent};
dialog->setAttribute(Qt::WA_DeleteOnClose); dialog->setAttribute(Qt::WA_DeleteOnClose);
result->setCloseTarget(dialog, QStringLiteral("reject()"));
//prepare the dialog //prepare the dialog
auto title = config.title(); auto title = config.title();
@ -494,6 +498,7 @@ void WidgetsPresenter::presentProgressDialog(const MessageConfig &config, const
parent = QApplication::activeWindow(); parent = QApplication::activeWindow();
auto dialog = new ProgressDialog{config, result, control, parent}; auto dialog = new ProgressDialog{config, result, control, parent};
dialog->setAttribute(Qt::WA_DeleteOnClose); dialog->setAttribute(Qt::WA_DeleteOnClose);
result->setCloseTarget(dialog, QStringLiteral("reject()"));
dialog->open(); dialog->open();
} }

Loading…
Cancel
Save