@@ -84,15 +84,11 @@ QgsRasterLayerSaveAsDialog::QgsRasterLayerSaveAsDialog( QgsRasterLayer* rasterLa
8484 {
8585 mPyramidsOptionsWidget ->createOptionsWidget ()->setType ( QgsRasterFormatSaveOptionsWidget::ProfileLineEdit );
8686
87- // init. pyramids button group
88- for ( int i = -2 , j = 0 ; i >= -4 ; i--, j++ )
89- mPyramidsButtonGroup ->setId ( mPyramidsButtonGroup ->button ( i ), j );
9087 // TODO enable "use existing", has no effect for now, because using Create() in gdal provider
9188 // if ( ! mDataProvider->hasPyramids() )
9289 // mPyramidsButtonGroup->button( QgsRasterDataProvider::CopyExisting )->setEnabled( false );
93- mPyramidsButtonGroup ->button ( QgsRasterDataProvider::CopyExisting )->setEnabled ( false );
94- mPyramidsButtonGroup ->button ( QgsRasterDataProvider::PyramidsFlagNo )->click ();
95- mPyramidsButtonGroup ->button ( QgsRasterDataProvider::PyramidsFlagNo )->setChecked ( true );
90+ mPyramidsUseExistingCheckBox ->setEnabled ( false );
91+ mPyramidsUseExistingCheckBox ->setVisible ( false );
9692
9793 populatePyramidsLevels ();
9894 connect ( mPyramidsOptionsWidget , SIGNAL ( overviewListChanged () ),
@@ -111,12 +107,10 @@ QgsRasterLayerSaveAsDialog::QgsRasterLayerSaveAsDialog( QgsRasterLayer* rasterLa
111107 okButton->setEnabled ( false );
112108 }
113109
114-
115110 // this should scroll down to make widget visible, but it's not happening
116111 // (at least part of it is visible)...
117- connect ( mCreateOptionsGroupBox , SIGNAL ( expanded ( QWidget* ) ),
112+ connect ( mCreateOptionsGroupBox , SIGNAL ( collapsedStateChanged ( QWidget* ) ),
118113 this , SLOT ( groupBoxExpanded ( QWidget* ) ) );
119-
120114}
121115
122116void QgsRasterLayerSaveAsDialog::setValidators ()
@@ -236,7 +230,7 @@ QString QgsRasterLayerSaveAsDialog::outputFormat() const
236230
237231QStringList QgsRasterLayerSaveAsDialog::createOptions () const
238232{
239- return mCreateOptionsWidget ? mCreateOptionsWidget ->options () : QStringList ();
233+ return mCreateOptionsGroupBox -> isChecked () ? mCreateOptionsWidget ->options () : QStringList ();
240234}
241235
242236QgsRectangle QgsRasterLayerSaveAsDialog::outputRectangle () const
@@ -535,6 +529,12 @@ void QgsRasterLayerSaveAsDialog::on_mRawModeRadioButton_toggled( bool checked )
535529 mNoDataGroupBox ->setEnabled ( checked && mDataProvider ->bandCount () == 1 );
536530}
537531
532+ void QgsRasterLayerSaveAsDialog::groupBoxExpanded ( QWidget * widget )
533+ {
534+ if ( !mCreateOptionsGroupBox ->isCollapsed () )
535+ mScrollArea ->ensureWidgetVisible ( widget );
536+ }
537+
538538void QgsRasterLayerSaveAsDialog::on_mAddNoDataManuallyToolButton_clicked ()
539539{
540540 addNoDataRow ( std::numeric_limits<double >::quiet_NaN (), std::numeric_limits<double >::quiet_NaN () );
@@ -658,31 +658,15 @@ void QgsRasterLayerSaveAsDialog::on_mTileModeCheckBox_toggled( bool toggled )
658658 // enable pyramids
659659 if ( ! mPyramidsGroupBox ->isChecked () )
660660 mPyramidsGroupBox ->setChecked ( true );
661- if ( mPyramidsButtonGroup ->checkedId () == QgsRasterDataProvider::PyramidsFlagNo )
662- {
663- mPyramidsButtonGroup ->button ( QgsRasterDataProvider::PyramidsFlagYes )->click ();
664- mPyramidsButtonGroup ->button ( QgsRasterDataProvider::PyramidsFlagYes )->setChecked ( true );
665- }
661+ if ( mPyramidsGroupBox ->isCollapsed () )
662+ mPyramidsGroupBox ->setCollapsed ( false );
666663 mPyramidsOptionsWidget ->checkAllLevels ( true );
667664 }
668665}
669666
670- void QgsRasterLayerSaveAsDialog::on_mPyramidsButtonGroup_buttonClicked ( int id )
667+ void QgsRasterLayerSaveAsDialog::on_mPyramidsGroupBox_toggled ( bool toggled )
671668{
672- if ( id == QgsRasterDataProvider::PyramidsFlagNo || id == QgsRasterDataProvider::CopyExisting )
673- {
674- mPyramidsOptionsWidget ->setEnabled ( false );
675- mPyramidResolutionsLabel ->setEnabled ( false );
676- mPyramidResolutionsLineEdit ->setEnabled ( false );
677- }
678- else if ( id == QgsRasterDataProvider::PyramidsFlagYes )
679- {
680- mPyramidsOptionsWidget ->setEnabled ( true );
681- mPyramidResolutionsLabel ->setEnabled ( true );
682- mPyramidResolutionsLineEdit ->setEnabled ( true );
683- }
684- else
685- QgsDebugMsg ( QString ( " invalid button id %1" ).arg ( id ) );
669+ Q_UNUSED ( toggled );
686670 populatePyramidsLevels ();
687671}
688672
@@ -691,14 +675,14 @@ void QgsRasterLayerSaveAsDialog::populatePyramidsLevels()
691675 // if selection != "Build pyramids", get pyramids from actual layer
692676 QString text;
693677
694- if ( mPyramidsButtonGroup -> checkedId () != QgsRasterDataProvider::PyramidsFlagNo )
678+ if ( mPyramidsGroupBox -> isChecked () )
695679 {
696680 QList<QgsRasterPyramid> myPyramidList;
697- if ( mPyramidsButtonGroup -> checkedId () == QgsRasterDataProvider::CopyExisting )
681+ if ( mPyramidsUseExistingCheckBox -> isChecked () )
698682 {
699683 myPyramidList = mDataProvider ->buildPyramidList ();
700684 }
701- else if ( mPyramidsButtonGroup -> checkedId () == QgsRasterDataProvider::PyramidsFlagYes )
685+ else
702686 {
703687 if ( ! mPyramidsOptionsWidget ->overviewList ().isEmpty () )
704688 myPyramidList = mDataProvider ->buildPyramidList ( mPyramidsOptionsWidget ->overviewList () );
@@ -708,8 +692,7 @@ void QgsRasterLayerSaveAsDialog::populatePyramidsLevels()
708692 myRasterPyramidIterator != myPyramidList.end ();
709693 ++myRasterPyramidIterator )
710694 {
711- if ( mPyramidsButtonGroup ->checkedId () == QgsRasterDataProvider::PyramidsFlagYes
712- || myRasterPyramidIterator->exists )
695+ if ( myRasterPyramidIterator->exists )
713696 {
714697 text += QString::number ( myRasterPyramidIterator->xDim ) + QString ( " x" ) +
715698 QString::number ( myRasterPyramidIterator->yDim ) + " " ;
@@ -753,6 +736,9 @@ void QgsRasterLayerSaveAsDialog::adjustNoDataCellWidth( int row, int column )
753736QList<QgsRasterNuller::NoData> QgsRasterLayerSaveAsDialog::noData () const
754737{
755738 QList<QgsRasterNuller::NoData> noDataList;
739+ if ( ! mNoDataGroupBox ->isChecked () )
740+ return noDataList;
741+
756742 for ( int r = 0 ; r < mNoDataTableWidget ->rowCount (); r++ )
757743 {
758744 QgsRasterNuller::NoData noData;
@@ -762,3 +748,19 @@ QList<QgsRasterNuller::NoData> QgsRasterLayerSaveAsDialog::noData() const
762748 }
763749 return noDataList;
764750}
751+
752+ QList<int > QgsRasterLayerSaveAsDialog::overviewList () const
753+ {
754+ return mPyramidsGroupBox ->isChecked () ? mPyramidsOptionsWidget ->overviewList () : QList<int >();
755+ }
756+
757+ QgsRasterDataProvider::RasterBuildPyramids QgsRasterLayerSaveAsDialog::buildPyramidsFlag () const
758+ {
759+ if ( ! mPyramidsGroupBox ->isChecked () )
760+ return QgsRasterDataProvider::PyramidsFlagNo;
761+ else if ( mPyramidsUseExistingCheckBox ->isChecked () )
762+ return QgsRasterDataProvider::CopyExisting;
763+ else
764+ return QgsRasterDataProvider::PyramidsFlagYes;
765+ }
766+
0 commit comments