|
16 | 16 | #include <QPushButton> |
17 | 17 | #include <QDialog> |
18 | 18 | #include <QSettings> |
| 19 | +#include <QVBoxLayout> |
19 | 20 |
|
20 | 21 | #include "qgspanelwidget.h" |
21 | 22 | #include "qgslogger.h" |
@@ -84,117 +85,6 @@ void QgsPanelWidget::keyPressEvent( QKeyEvent *event ) |
84 | 85 | } |
85 | 86 | } |
86 | 87 |
|
87 | | -QgsPanelWidgetStack::QgsPanelWidgetStack( QWidget *parent ) |
88 | | - : QWidget( parent ) |
89 | | -{ |
90 | | - setupUi( this ); |
91 | | - clear(); |
92 | | - |
93 | | - connect( mBackButton, SIGNAL( pressed() ), this, SLOT( acceptCurrentPanel() ) ); |
94 | | -} |
95 | | - |
96 | | -void QgsPanelWidgetStack::addMainPanel( QgsPanelWidget *panel ) |
97 | | -{ |
98 | | - // TODO Don't allow adding another main widget or else that would be strange for the user. |
99 | | - connect( panel, SIGNAL( showPanel( QgsPanelWidget* ) ), this, SLOT( showPanel( QgsPanelWidget* ) ), |
100 | | - // using unique connection because addMainPanel() may be called multiple times |
101 | | - // for a panel, so showPanel() slot could be invoked more times from one signal |
102 | | - Qt::UniqueConnection ); |
103 | | - mStackedWidget->insertWidget( 0, panel ); |
104 | | - mStackedWidget->setCurrentIndex( 0 ); |
105 | | -} |
106 | | - |
107 | | -QgsPanelWidget *QgsPanelWidgetStack::mainWidget() |
108 | | -{ |
109 | | - return qobject_cast<QgsPanelWidget*>( mStackedWidget->widget( 0 ) ); |
110 | | -} |
111 | | - |
112 | | -QgsPanelWidget *QgsPanelWidgetStack::takeMainWidget() |
113 | | -{ |
114 | | - QWidget* widget = mStackedWidget->widget( 0 ); |
115 | | - mStackedWidget->removeWidget( widget ); |
116 | | - return qobject_cast<QgsPanelWidget*>( widget ); |
117 | | -} |
118 | | - |
119 | | -void QgsPanelWidgetStack::clear() |
120 | | -{ |
121 | | - for ( int i = mStackedWidget->count(); i >= 0; i-- ) |
122 | | - { |
123 | | - if ( QgsPanelWidget* panelWidget = qobject_cast<QgsPanelWidget*>( mStackedWidget->widget( i ) ) ) |
124 | | - { |
125 | | - mStackedWidget->removeWidget( panelWidget ); |
126 | | - if ( panelWidget->autoDelete() ) |
127 | | - { |
128 | | - panelWidget->deleteLater(); |
129 | | - } |
130 | | - } |
131 | | - else if ( QWidget* widget = mStackedWidget->widget( i ) ) |
132 | | - { |
133 | | - mStackedWidget->removeWidget( widget ); |
134 | | - widget->deleteLater(); |
135 | | - } |
136 | | - } |
137 | | - mTitles.clear(); |
138 | | - mTitleText->hide(); |
139 | | - mBackButton->hide(); |
140 | | - this->updateBreadcrumb(); |
141 | | -} |
142 | | - |
143 | | -void QgsPanelWidgetStack::acceptCurrentPanel() |
144 | | -{ |
145 | | - // You can't accept the main panel. |
146 | | - if ( mStackedWidget->currentIndex() == 0 ) |
147 | | - return; |
148 | | - |
149 | | - QgsPanelWidget* widget = qobject_cast<QgsPanelWidget*>( mStackedWidget->currentWidget() ); |
150 | | - widget->acceptPanel(); |
151 | | -} |
152 | | - |
153 | | -void QgsPanelWidgetStack::showPanel( QgsPanelWidget *panel ) |
154 | | -{ |
155 | | - mTitles.push( panel->panelTitle() ); |
156 | | - |
157 | | - connect( panel, SIGNAL( panelAccepted( QgsPanelWidget* ) ), this, SLOT( closePanel( QgsPanelWidget* ) ) ); |
158 | | - connect( panel, SIGNAL( showPanel( QgsPanelWidget* ) ), this, SLOT( showPanel( QgsPanelWidget* ) ) ); |
159 | | - |
160 | | - int index = mStackedWidget->addWidget( panel ); |
161 | | - mStackedWidget->setCurrentIndex( index ); |
162 | | - mBackButton->show(); |
163 | | - mTitleText->show(); |
164 | | - |
165 | | - this->updateBreadcrumb(); |
166 | | -} |
167 | | - |
168 | | -void QgsPanelWidgetStack::closePanel( QgsPanelWidget *panel ) |
169 | | -{ |
170 | | - mTitles.pop(); |
171 | | - mStackedWidget->setCurrentIndex( mStackedWidget->currentIndex() - 1 ); |
172 | | - mStackedWidget->removeWidget( panel ); |
173 | | - if ( panel->autoDelete() ) |
174 | | - { |
175 | | - panel->deleteLater(); |
176 | | - } |
177 | | - |
178 | | - if ( mStackedWidget->currentIndex() == 0 ) |
179 | | - { |
180 | | - mBackButton->hide(); |
181 | | - mTitleText->hide(); |
182 | | - } |
183 | | - this->updateBreadcrumb(); |
184 | | -} |
185 | | - |
186 | | -void QgsPanelWidgetStack::updateBreadcrumb() |
187 | | -{ |
188 | | - QString breadcrumb; |
189 | | - Q_FOREACH ( QString title, mTitles ) |
190 | | - { |
191 | | - breadcrumb += QString( " %1 >" ).arg( title ); |
192 | | - } |
193 | | - // Remove the last |
194 | | - breadcrumb.chop( 1 ); |
195 | | - mTitleText->setText( breadcrumb ); |
196 | | -} |
197 | | - |
198 | 88 | QgsPanelWidgetWrapper::QgsPanelWidgetWrapper( QWidget *widget, QWidget *parent ) |
199 | 89 | : QgsPanelWidget( parent ) |
200 | 90 | , mWidget( widget ) |
|
0 commit comments