void TestQgsDockWidget::testSignals() { QWidget *w = new QWidget(); QApplication::setActiveWindow( w ); //required for focus events QgsDockWidget *d = new QgsDockWidget( w ); QSignalSpy spyClosedStateChanged( d, SIGNAL( closedStateChanged( bool ) ) ); QSignalSpy spyClosed( d, SIGNAL( closed() ) ); QSignalSpy spyOpenedStateChanged( d, SIGNAL( openedStateChanged( bool ) ) ); QSignalSpy spyOpened( d, SIGNAL( opened() ) ); w->show(); d->show(); QCOMPARE( spyClosedStateChanged.count(), 1 ); QCOMPARE( spyClosedStateChanged.last().at( 0 ).toBool(), false ); QCOMPARE( spyOpenedStateChanged.count(), 1 ); QCOMPARE( spyOpenedStateChanged.last().at( 0 ).toBool(), true ); QCOMPARE( spyClosed.count(), 0 ); QCOMPARE( spyOpened.count(), 1 ); d->close(); QCOMPARE( spyClosedStateChanged.count(), 2 ); QCOMPARE( spyClosedStateChanged.last().at( 0 ).toBool(), true ); QCOMPARE( spyOpenedStateChanged.count(), 2 ); QCOMPARE( spyOpenedStateChanged.last().at( 0 ).toBool(), false ); QCOMPARE( spyClosed.count(), 1 ); QCOMPARE( spyOpened.count(), 1 ); delete w; }
void QgsTileScaleWidget::showTileScale( QMainWindow *mainWindow ) { QgsDockWidget *dock = mainWindow->findChild<QgsDockWidget *>( QStringLiteral( "theTileScaleDock" ) ); if ( dock ) { dock->setVisible( dock->isHidden() ); return; } QgsMapCanvas *canvas = mainWindow->findChild<QgsMapCanvas *>( QStringLiteral( "theMapCanvas" ) ); QgsDebugMsg( QString( "canvas:%1 [%2]" ).arg( ( quint64 ) canvas, 0, 16 ).arg( canvas ? canvas->objectName() : "" ) ); if ( !canvas ) { QgsDebugMsg( "map canvas mapCanvas not found" ); return; } QgsTileScaleWidget *tws = new QgsTileScaleWidget( canvas ); tws->setObjectName( QStringLiteral( "theTileScaleWidget" ) ); QgsLayerTreeView *legend = mainWindow->findChild<QgsLayerTreeView *>( QStringLiteral( "theLayerTreeView" ) ); if ( legend ) { connect( legend, &QgsLayerTreeView::currentLayerChanged, tws, &QgsTileScaleWidget::layerChanged ); } else { QgsDebugMsg( "legend not found" ); } //create the dock widget dock = new QgsDockWidget( tr( "Tile Scale Panel" ), mainWindow ); dock->setObjectName( QStringLiteral( "theTileScaleDock" ) ); dock->setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea ); mainWindow->addDockWidget( Qt::RightDockWidgetArea, dock ); // add to the Panel submenu QMenu *panelMenu = mainWindow->findChild<QMenu *>( QStringLiteral( "mPanelMenu" ) ); if ( panelMenu ) { // add to the Panel submenu panelMenu->addAction( dock->toggleViewAction() ); } else { QgsDebugMsg( "panel menu not found" ); } dock->setWidget( tws ); connect( dock, &QDockWidget::visibilityChanged, tws, &QgsTileScaleWidget::scaleEnabled ); QgsSettings settings; dock->setVisible( settings.value( QStringLiteral( "UI/tileScaleEnabled" ), false ).toBool() ); }
void TestQgsDockWidget::testUserVisible() { QgsDockWidget *w = new QgsDockWidget(); QVERIFY( !w->isUserVisible() ); w->show(); QVERIFY( w->isUserVisible() ); w->hide(); QVERIFY( !w->isUserVisible() ); delete w; }