diff --git a/src/dialogs/QskDialogSubWindow.cpp b/src/dialogs/QskDialogSubWindow.cpp index 85edb432..0a231924 100644 --- a/src/dialogs/QskDialogSubWindow.cpp +++ b/src/dialogs/QskDialogSubWindow.cpp @@ -56,7 +56,7 @@ void QskDialogSubWindow::addDialogAction( QskDialog::Action action ) if ( action != QskDialog::NoAction ) { if ( m_data->buttonBox == nullptr ) - m_data->buttonBox = createButtonBox(); + initButtonBox(); if ( m_data->buttonBox ) m_data->buttonBox->addAction( action ); @@ -69,7 +69,7 @@ void QskDialogSubWindow::addDialogButton( if ( button ) { if ( m_data->buttonBox == nullptr ) - m_data->buttonBox = createButtonBox(); + initButtonBox(); if ( m_data->buttonBox ) m_data->buttonBox->addButton( button, actionRole ); @@ -100,27 +100,14 @@ void QskDialogSubWindow::setDialogActions( QskDialog::Actions actions ) this, &QskDialogSubWindow::reject ); } - + m_data->buttonBox = nullptr; } else { if ( m_data->buttonBox == nullptr ) { - m_data->buttonBox = createButtonBox(); - - if ( m_data->buttonBox ) - { - m_data->buttonBox->setParentItem( this ); - if ( m_data->buttonBox->parent() == nullptr ) - m_data->buttonBox->setParent( this ); - - connect( m_data->buttonBox, &QskDialogButtonBox::accepted, - this, &QskDialogSubWindow::accept, Qt::UniqueConnection ); - - connect( m_data->buttonBox, &QskDialogButtonBox::rejected, - this, &QskDialogSubWindow::reject, Qt::UniqueConnection ); - } + initButtonBox(); } if ( m_data->buttonBox ) @@ -192,7 +179,7 @@ QMarginsF QskDialogSubWindow::contentPadding() const void QskDialogSubWindow::setDefaultDialogAction( QskDialog::Action action ) { QskPushButton* button = nullptr; - + if ( m_data->buttonBox ) button = m_data->buttonBox->button( action ); @@ -223,12 +210,12 @@ QskPushButton* QskDialogSubWindow::defaultButton() const QskDialogButtonBox* QskDialogSubWindow::buttonBox() { return m_data->buttonBox; -} +} const QskDialogButtonBox* QskDialogSubWindow::buttonBox() const { return m_data->buttonBox; -} +} QskDialog::Action QskDialogSubWindow::clickedAction() const { @@ -236,7 +223,7 @@ QskDialog::Action QskDialogSubWindow::clickedAction() const return m_data->buttonBox->clickedAction(); return QskDialog::NoAction; -} +} void QskDialogSubWindow::setResult( QskDialog::DialogCode result ) { @@ -328,6 +315,25 @@ QskDialogButtonBox* QskDialogSubWindow::createButtonBox() return new QskDialogButtonBox(); } +void QskDialogSubWindow::initButtonBox() +{ + m_data->buttonBox = createButtonBox(); + + if ( m_data->buttonBox ) + { + m_data->buttonBox->setParentItem( this ); + + if ( m_data->buttonBox->parent() == nullptr ) + m_data->buttonBox->setParent( this ); + + connect( m_data->buttonBox, &QskDialogButtonBox::accepted, + this, &QskDialogSubWindow::accept, Qt::UniqueConnection ); + + connect( m_data->buttonBox, &QskDialogButtonBox::rejected, + this, &QskDialogSubWindow::reject, Qt::UniqueConnection ); + } +} + void QskDialogSubWindow::aboutToShow() { if ( size().isEmpty() ) diff --git a/src/dialogs/QskDialogSubWindow.h b/src/dialogs/QskDialogSubWindow.h index 0be0b7e2..328a086e 100644 --- a/src/dialogs/QskDialogSubWindow.h +++ b/src/dialogs/QskDialogSubWindow.h @@ -30,7 +30,7 @@ class QSK_EXPORT QskDialogSubWindow : public QskSubWindow void addDialogAction( QskDialog::Action ); void addDialogButton( QskPushButton*, QskDialog::ActionRole ); - + Q_INVOKABLE QskDialog::Action clickedAction() const; Q_INVOKABLE QskDialog::DialogCode result() const; @@ -48,7 +48,7 @@ class QSK_EXPORT QskDialogSubWindow : public QskSubWindow QQuickItem* contentItem() const; // padding around the contentItem - void setContentPadding( const QMarginsF & ); + void setContentPadding( const QMarginsF& ); QMarginsF contentPadding() const; qreal heightForWidth( qreal width ) const override; @@ -76,6 +76,8 @@ class QSK_EXPORT QskDialogSubWindow : public QskSubWindow virtual QskDialogButtonBox* createButtonBox(); private: + void initButtonBox(); + class PrivateData; std::unique_ptr< PrivateData > m_data; };