@@ -84,15 +84,11 @@ QgsRasterLayerSaveAsDialog::QgsRasterLayerSaveAsDialog( QgsRasterLayer* rasterLa
84
84
{
85
85
mPyramidsOptionsWidget ->createOptionsWidget ()->setType ( QgsRasterFormatSaveOptionsWidget::ProfileLineEdit );
86
86
87
- // init. pyramids button group
88
- for ( int i = -2 , j = 0 ; i >= -4 ; i--, j++ )
89
- mPyramidsButtonGroup ->setId ( mPyramidsButtonGroup ->button ( i ), j );
90
87
// TODO enable "use existing", has no effect for now, because using Create() in gdal provider
91
88
// if ( ! mDataProvider->hasPyramids() )
92
89
// 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 );
96
92
97
93
populatePyramidsLevels ();
98
94
connect ( mPyramidsOptionsWidget , SIGNAL ( overviewListChanged () ),
@@ -111,12 +107,10 @@ QgsRasterLayerSaveAsDialog::QgsRasterLayerSaveAsDialog( QgsRasterLayer* rasterLa
111
107
okButton->setEnabled ( false );
112
108
}
113
109
114
-
115
110
// this should scroll down to make widget visible, but it's not happening
116
111
// (at least part of it is visible)...
117
- connect ( mCreateOptionsGroupBox , SIGNAL ( expanded ( QWidget* ) ),
112
+ connect ( mCreateOptionsGroupBox , SIGNAL ( collapsedStateChanged ( QWidget* ) ),
118
113
this , SLOT ( groupBoxExpanded ( QWidget* ) ) );
119
-
120
114
}
121
115
122
116
void QgsRasterLayerSaveAsDialog::setValidators ()
@@ -236,7 +230,7 @@ QString QgsRasterLayerSaveAsDialog::outputFormat() const
236
230
237
231
QStringList QgsRasterLayerSaveAsDialog::createOptions () const
238
232
{
239
- return mCreateOptionsWidget ? mCreateOptionsWidget ->options () : QStringList ();
233
+ return mCreateOptionsGroupBox -> isChecked () ? mCreateOptionsWidget ->options () : QStringList ();
240
234
}
241
235
242
236
QgsRectangle QgsRasterLayerSaveAsDialog::outputRectangle () const
@@ -535,6 +529,12 @@ void QgsRasterLayerSaveAsDialog::on_mRawModeRadioButton_toggled( bool checked )
535
529
mNoDataGroupBox ->setEnabled ( checked && mDataProvider ->bandCount () == 1 );
536
530
}
537
531
532
+ void QgsRasterLayerSaveAsDialog::groupBoxExpanded ( QWidget * widget )
533
+ {
534
+ if ( !mCreateOptionsGroupBox ->isCollapsed () )
535
+ mScrollArea ->ensureWidgetVisible ( widget );
536
+ }
537
+
538
538
void QgsRasterLayerSaveAsDialog::on_mAddNoDataManuallyToolButton_clicked ()
539
539
{
540
540
addNoDataRow ( std::numeric_limits<double >::quiet_NaN (), std::numeric_limits<double >::quiet_NaN () );
@@ -658,31 +658,15 @@ void QgsRasterLayerSaveAsDialog::on_mTileModeCheckBox_toggled( bool toggled )
658
658
// enable pyramids
659
659
if ( ! mPyramidsGroupBox ->isChecked () )
660
660
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 );
666
663
mPyramidsOptionsWidget ->checkAllLevels ( true );
667
664
}
668
665
}
669
666
670
- void QgsRasterLayerSaveAsDialog::on_mPyramidsButtonGroup_buttonClicked ( int id )
667
+ void QgsRasterLayerSaveAsDialog::on_mPyramidsGroupBox_toggled ( bool toggled )
671
668
{
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 );
686
670
populatePyramidsLevels ();
687
671
}
688
672
@@ -691,14 +675,14 @@ void QgsRasterLayerSaveAsDialog::populatePyramidsLevels()
691
675
// if selection != "Build pyramids", get pyramids from actual layer
692
676
QString text;
693
677
694
- if ( mPyramidsButtonGroup -> checkedId () != QgsRasterDataProvider::PyramidsFlagNo )
678
+ if ( mPyramidsGroupBox -> isChecked () )
695
679
{
696
680
QList<QgsRasterPyramid> myPyramidList;
697
- if ( mPyramidsButtonGroup -> checkedId () == QgsRasterDataProvider::CopyExisting )
681
+ if ( mPyramidsUseExistingCheckBox -> isChecked () )
698
682
{
699
683
myPyramidList = mDataProvider ->buildPyramidList ();
700
684
}
701
- else if ( mPyramidsButtonGroup -> checkedId () == QgsRasterDataProvider::PyramidsFlagYes )
685
+ else
702
686
{
703
687
if ( ! mPyramidsOptionsWidget ->overviewList ().isEmpty () )
704
688
myPyramidList = mDataProvider ->buildPyramidList ( mPyramidsOptionsWidget ->overviewList () );
@@ -708,8 +692,7 @@ void QgsRasterLayerSaveAsDialog::populatePyramidsLevels()
708
692
myRasterPyramidIterator != myPyramidList.end ();
709
693
++myRasterPyramidIterator )
710
694
{
711
- if ( mPyramidsButtonGroup ->checkedId () == QgsRasterDataProvider::PyramidsFlagYes
712
- || myRasterPyramidIterator->exists )
695
+ if ( myRasterPyramidIterator->exists )
713
696
{
714
697
text += QString::number ( myRasterPyramidIterator->xDim ) + QString ( " x" ) +
715
698
QString::number ( myRasterPyramidIterator->yDim ) + " " ;
@@ -753,6 +736,9 @@ void QgsRasterLayerSaveAsDialog::adjustNoDataCellWidth( int row, int column )
753
736
QList<QgsRasterNuller::NoData> QgsRasterLayerSaveAsDialog::noData () const
754
737
{
755
738
QList<QgsRasterNuller::NoData> noDataList;
739
+ if ( ! mNoDataGroupBox ->isChecked () )
740
+ return noDataList;
741
+
756
742
for ( int r = 0 ; r < mNoDataTableWidget ->rowCount (); r++ )
757
743
{
758
744
QgsRasterNuller::NoData noData;
@@ -762,3 +748,19 @@ QList<QgsRasterNuller::NoData> QgsRasterLayerSaveAsDialog::noData() const
762
748
}
763
749
return noDataList;
764
750
}
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