void QgsMapToolMoveLabel::canvasPressEvent( QgsMapMouseEvent* e ) { deleteRubberBands(); if ( !labelAtPosition( e, mCurrentLabelPos ) ) { return; } QgsMapLayer* layer = QgsMapLayerRegistry::instance()->mapLayer( mCurrentLabelPos.layerID ); if ( !layer || !layer->isEditable() ) { return; } int xCol, yCol; if ( labelMoveable( layer, xCol, yCol ) || diagramMoveable( layer, xCol, yCol ) ) { mStartPointMapCoords = toMapCoordinates( e->pos() ); QgsPoint referencePoint; if ( !rotationPoint( referencePoint, !preserveRotation(), false ) ) { referencePoint.setX( mCurrentLabelPos.labelRect.xMinimum() ); referencePoint.setY( mCurrentLabelPos.labelRect.yMinimum() ); } mClickOffsetX = mStartPointMapCoords.x() - referencePoint.x(); mClickOffsetY = mStartPointMapCoords.y() - referencePoint.y(); createRubberBands(); } }
void QgsLegendLayer::updateIcon() { QPixmap newIcon( getOriginalPixmap() ); QgsMapLayer* theLayer = layer(); //overview // FIXME: overview icon is missing /* if ( theFile->isInOverview() ) { // Overlay the overview icon on the default icon QPixmap myPixmap = QgsApplication::getThemePixmap( "/mIconOverview.png" ); QPainter p( &newIcon ); p.drawPixmap( 0, 0, myPixmap ); p.end(); }*/ //editable if ( theLayer->isEditable() ) { QPixmap myPixmap; QgsVectorLayer* vlayer = qobject_cast<QgsVectorLayer *>( theLayer ); if ( vlayer->isModified() ) { myPixmap = QgsApplication::getThemePixmap( "/mIconEditableEdits.png" ); } else { myPixmap = QgsApplication::getThemePixmap( "/mIconEditable.png" ); } // use editable icon instead of the layer's type icon newIcon = myPixmap; // Overlay the editable icon on the default icon /*QPainter p( &newIcon ); p.drawPixmap( 0, 0, myPixmap ); p.end();*/ } // TODO: projection error icon? QIcon theIcon( newIcon ); QgsLegend* l = legend(); if ( l ) { l->blockSignals( true ); //prevent unnecessary canvas redraw } setIcon( 0, theIcon ); if ( l ) { l->blockSignals( false ); } }