21#include <QDialogButtonBox>
26#include "moc_qgspanelwidgetstack.cpp"
28using namespace Qt::StringLiterals;
38 mMenuButton->setStyleSheet( u
"QToolButton::menu-indicator { image: none; }"_s );
47 Qt::UniqueConnection );
48 mStackedWidget->insertWidget( 0, panel );
49 mStackedWidget->setCurrentIndex( 0 );
55 return qobject_cast<QgsPanelWidget *>( mStackedWidget->widget( 0 ) );
63 QWidget *widget = mStackedWidget->widget( 0 );
66 mStackedWidget->removeWidget( widget );
67 return qobject_cast<QgsPanelWidget *>( widget );
77 for (
int i = mStackedWidget->count() - 1; i >= 0; i-- )
79 if (
QgsPanelWidget *panelWidget = qobject_cast<QgsPanelWidget *>( mStackedWidget->widget( i ) ) )
81 mStackedWidget->removeWidget( panelWidget );
82 if ( panelWidget->autoDelete() )
84 panelWidget->deleteLater();
87 else if ( QWidget *widget = mStackedWidget->widget( i ) )
89 mStackedWidget->removeWidget( widget );
90 widget->deleteLater();
97 this->updateBreadcrumb();
102 return qobject_cast<QgsPanelWidget *>( mStackedWidget->currentWidget() );
107 if (
const QgsPanelWidget *widget = qobject_cast<const QgsPanelWidget *>( mStackedWidget->currentWidget() ) )
109 if ( widget->applySizeConstraintsToStack() )
110 return widget->sizeHint();
112 return QWidget::sizeHint();
117 if (
const QgsPanelWidget *widget = qobject_cast<const QgsPanelWidget *>( mStackedWidget->currentWidget() ) )
119 if ( widget->applySizeConstraintsToStack() )
120 return widget->minimumSizeHint();
123 return QWidget::minimumSizeHint();
129 if ( mStackedWidget->currentIndex() <= 0 )
139 setUpdatesEnabled(
false );
140 mStackedWidget->setUpdatesEnabled(
false );
142 for (
int i = mStackedWidget->count() - 1; i > 0; --i )
144 if (
QgsPanelWidget *panelWidget = qobject_cast<QgsPanelWidget *>( mStackedWidget->widget( i ) ) )
146 panelWidget->acceptPanel();
149 setUpdatesEnabled(
true );
150 mStackedWidget->setUpdatesEnabled(
true );
160 const int index = mStackedWidget->addWidget( panel );
161 mStackedWidget->setCurrentIndex( index );
172 mStackedWidget->setCurrentIndex( mStackedWidget->currentIndex() - 1 );
173 mStackedWidget->removeWidget( panel );
176 panel->deleteLater();
179 if ( mStackedWidget->currentIndex() == 0 )
189 this->updateBreadcrumb();
194 if ( e->button() == Qt::BackButton )
202 if ( e->key() == Qt::Key_Escape )
208void QgsPanelWidgetStack::updateBreadcrumb()
211 const auto constMTitles = mTitles;
212 for (
const QString &title : constMTitles )
214 breadcrumb += u
" %1 >"_s.arg( title );
217 breadcrumb.chop( 1 );
218 mTitleText->setText( breadcrumb );
221void QgsPanelWidgetStack::updateMenuButton()
225 mMenuButton->setVisible(
true );
226 mMenuButton->setToolTip(
currentPanel()->menuButtonTooltip() );
227 mMenuButton->setMenu( menu );
231 mMenuButton->setVisible(
false );