diff --git a/src/gui/stac/qgsstacitemlistmodel.cpp b/src/gui/stac/qgsstacitemlistmodel.cpp index 112563bc3e55..9609559e76f8 100644 --- a/src/gui/stac/qgsstacitemlistmodel.cpp +++ b/src/gui/stac/qgsstacitemlistmodel.cpp @@ -109,6 +109,10 @@ QVariant QgsStacItemListModel::data( const QModelIndex &index, int role ) const { return QVariant::fromValue( mItems.at( index.row() )->geometry() ); } + case Role::Extent: + { + return QVariant::fromValue( mItems.at( index.row() )->boundingBox() ); + } } return QVariant(); diff --git a/src/gui/stac/qgsstacsourceselect.cpp b/src/gui/stac/qgsstacsourceselect.cpp index 8bbd89fe87fe..21c207fc2be8 100644 --- a/src/gui/stac/qgsstacsourceselect.cpp +++ b/src/gui/stac/qgsstacsourceselect.cpp @@ -173,6 +173,7 @@ void QgsStacSourceSelect::btnConnect_clicked() mStac->fetchStacObjectAsync( connection.url ); mFiltersLabel->clear(); mFiltersButton->setEnabled( false ); + emit enableButtons( false ); } void QgsStacSourceSelect::btnNew_clicked() @@ -364,7 +365,7 @@ void QgsStacSourceSelect::onItemCollectionRequestFinished( int requestId, QStrin #ifndef __clang_analyzer__ // Let the results appear, then fetch more if there's no scrollbar QTimer::singleShot( 100, this, [=] { - if ( !mItemsView->verticalScrollBar()->isVisible() ) + if ( isVisible() && !mItemsView->verticalScrollBar()->isVisible() ) { fetchNextResultPage(); } @@ -493,7 +494,7 @@ void QgsStacSourceSelect::showItemsContextMenu( QPoint point ) if ( QgsDataSourceManagerDialog *dsm = qobject_cast( window() ) ) bar = dsm->messageBar(); - QMenu *assetsMenu = menu->addMenu( tr( "Add Layer" ) ); + QMenu *assetsMenu = new QMenu( tr( "Add Layer" ), menu ); if ( const QgsStacItem *item = dynamic_cast( index.data( QgsStacItemListModel::Role::StacObject ).value() ) ) { const QMap assets = item->assets(); @@ -512,28 +513,27 @@ void QgsStacSourceSelect::showItemsContextMenu( QPoint point ) } QAction *zoomToAction = new QAction( tr( "Zoom to Item" ), menu ); - connect( zoomToAction, &QAction::triggered, this, [index, this] { - QgsGeometry geom = index.data( QgsStacItemListModel::Role::Geometry ).value(); + const QgsRectangle bbox = index.data( QgsStacItemListModel::Role::Extent ).value().toRectangle(); + connect( zoomToAction, &QAction::triggered, this, [bbox, this] { if ( QgsMapCanvas *map = mapCanvas() ) { - const QgsRectangle bbox = geom.boundingBox(); - const QgsCoordinateTransform ct( QgsCoordinateReferenceSystem::fromEpsgId( 4324 ), map->mapSettings().destinationCrs(), QgsProject::instance() ); + const QgsCoordinateTransform ct( QgsCoordinateReferenceSystem::fromEpsgId( 4326 ), map->mapSettings().destinationCrs(), QgsProject::instance() ); QgsRectangle extent = ct.transformBoundingBox( bbox ); map->zoomToFeatureExtent( extent ); } } ); + zoomToAction->setEnabled( !bbox.isNull() ); QAction *panToAction = new QAction( tr( "Pan to Item" ), menu ); - connect( panToAction, &QAction::triggered, this, [index, this] { - QgsGeometry geom = index.data( QgsStacItemListModel::Role::Geometry ).value(); + connect( panToAction, &QAction::triggered, this, [bbox, this] { if ( QgsMapCanvas *map = mapCanvas() ) { - const QgsRectangle bbox = geom.boundingBox(); - const QgsCoordinateTransform ct( QgsCoordinateReferenceSystem::fromEpsgId( 4324 ), map->mapSettings().destinationCrs(), QgsProject::instance() ); + const QgsCoordinateTransform ct( QgsCoordinateReferenceSystem::fromEpsgId( 4326 ), map->mapSettings().destinationCrs(), QgsProject::instance() ); const QgsRectangle extent = ct.transformBoundingBox( bbox ); map->setCenter( extent.center() ); } } ); + panToAction->setEnabled( !bbox.isNull() ); QAction *downloadAction = new QAction( tr( "Download Assets…" ), menu ); connect( downloadAction, &QAction::triggered, this, [index, bar, authCfg = mStac->authCfg()] { @@ -553,8 +553,11 @@ void QgsStacSourceSelect::showItemsContextMenu( QPoint point ) } ); - menu->addAction( zoomToAction ); - menu->addAction( panToAction ); + if ( mapCanvas() ) + { + menu->addAction( zoomToAction ); + menu->addAction( panToAction ); + } if ( !assetsMenu->isEmpty() ) menu->addMenu( assetsMenu ); menu->addAction( downloadAction ); diff --git a/src/ui/stac/qgsstacsearchparametersdialog.ui b/src/ui/stac/qgsstacsearchparametersdialog.ui index f27c6760f460..f39fc41dcd0a 100644 --- a/src/ui/stac/qgsstacsearchparametersdialog.ui +++ b/src/ui/stac/qgsstacsearchparametersdialog.ui @@ -54,7 +54,7 @@ - QDateTimeEdit::YearSection + QDateTimeEdit::Section::YearSection yyyy-MM-dd HH:mm:ss @@ -63,7 +63,7 @@ true - Qt::UTC + Qt::TimeSpec::UTC @@ -77,7 +77,7 @@ - QDateTimeEdit::YearSection + QDateTimeEdit::Section::YearSection yyyy-MM-dd HH:mm:ss @@ -86,7 +86,7 @@ true - Qt::UTC + Qt::TimeSpec::UTC @@ -95,7 +95,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -135,7 +135,7 @@ - QAbstractItemView::NoEditTriggers + QAbstractItemView::EditTrigger::NoEditTriggers false @@ -161,7 +161,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -176,26 +176,13 @@ - - - - Qt::Vertical - - - - 20 - 40 - - - - - Qt::Horizontal + Qt::Orientation::Horizontal - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok