bool QgsComposerScaleBar::readXML( const QDomElement& itemElem, const QDomDocument& doc ) { if ( itemElem.isNull() ) { return false; } mHeight = itemElem.attribute( "height", "5.0" ).toDouble(); mLabelBarSpace = itemElem.attribute( "labelBarSpace", "3.0" ).toDouble(); mBoxContentSpace = itemElem.attribute( "boxContentSpace", "1.0" ).toDouble(); mNumSegments = itemElem.attribute( "numSegments", "2" ).toInt(); mNumSegmentsLeft = itemElem.attribute( "numSegmentsLeft", "0" ).toInt(); mNumUnitsPerSegment = itemElem.attribute( "numUnitsPerSegment", "1.0" ).toDouble(); mSegmentMillimeters = itemElem.attribute( "segmentMillimeters", "0.0" ).toDouble(); mNumMapUnitsPerScaleBarUnit = itemElem.attribute( "numMapUnitsPerScaleBarUnit", "1.0" ).toDouble(); mPen.setWidthF( itemElem.attribute( "outlineWidth", "1.0" ).toDouble() ); mUnitLabeling = itemElem.attribute( "unitLabel" ); QString fontString = itemElem.attribute( "font", "" ); if ( !fontString.isEmpty() ) { mFont.fromString( fontString ); } //style delete mStyle; mStyle = 0; QString styleString = itemElem.attribute( "style", "" ); setStyle( tr( styleString.toLocal8Bit().data() ) ); mUnits = ( ScaleBarUnits )itemElem.attribute( "units" ).toInt(); mAlignment = ( Alignment )( itemElem.attribute( "alignment", "0" ).toInt() ); //map int mapId = itemElem.attribute( "mapId", "-1" ).toInt(); if ( mapId >= 0 ) { const QgsComposerMap* composerMap = mComposition->getComposerMapById( mapId ); mComposerMap = composerMap; if ( mComposerMap ) { connect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( updateSegmentSize() ) ); connect( mComposerMap, SIGNAL( destroyed( QObject* ) ), this, SLOT( invalidateCurrentMap() ) ); } } updateSegmentSize(); //restore general composer item properties QDomNodeList composerItemList = itemElem.elementsByTagName( "ComposerItem" ); if ( composerItemList.size() > 0 ) { QDomElement composerItemElem = composerItemList.at( 0 ).toElement(); _readXML( composerItemElem, doc ); } return true; }
void QgsComposerScaleBar::setComposerMap( const QgsComposerMap* map ) { disconnect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( updateSegmentSize() ) ); disconnect( mComposerMap, SIGNAL( destroyed( QObject* ) ), this, SLOT( invalidateCurrentMap() ) ); mComposerMap = map; if ( !map ) { return; } connect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( updateSegmentSize() ) ); connect( mComposerMap, SIGNAL( destroyed( QObject* ) ), this, SLOT( invalidateCurrentMap() ) ); refreshSegmentMillimeters(); }
void QgsComposerScaleBar::invalidateCurrentMap() { if ( !mComposerMap ) { return; } disconnect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( updateSegmentSize() ) ); disconnect( mComposerMap, SIGNAL( destroyed( QObject* ) ), this, SLOT( invalidateCurrentMap() ) ); mComposerMap = 0; }
bool QgsComposerScaleBar::readXML( const QDomElement& itemElem, const QDomDocument& doc ) { if ( itemElem.isNull() ) { return false; } mHeight = itemElem.attribute( "height", "5.0" ).toDouble(); mLabelBarSpace = itemElem.attribute( "labelBarSpace", "3.0" ).toDouble(); mBoxContentSpace = itemElem.attribute( "boxContentSpace", "1.0" ).toDouble(); mNumSegments = itemElem.attribute( "numSegments", "2" ).toInt(); mNumSegmentsLeft = itemElem.attribute( "numSegmentsLeft", "0" ).toInt(); mNumUnitsPerSegment = itemElem.attribute( "numUnitsPerSegment", "1.0" ).toDouble(); mSegmentSizeMode = static_cast<SegmentSizeMode>( itemElem.attribute( "segmentSizeMode", "0" ).toInt() ); mMinBarWidth = itemElem.attribute( "minBarWidth", "50" ).toInt(); mMaxBarWidth = itemElem.attribute( "maxBarWidth", "150" ).toInt(); mSegmentMillimeters = itemElem.attribute( "segmentMillimeters", "0.0" ).toDouble(); mNumMapUnitsPerScaleBarUnit = itemElem.attribute( "numMapUnitsPerScaleBarUnit", "1.0" ).toDouble(); mPen.setWidthF( itemElem.attribute( "outlineWidth", "1.0" ).toDouble() ); mUnitLabeling = itemElem.attribute( "unitLabel" ); mLineJoinStyle = QgsSymbolLayerV2Utils::decodePenJoinStyle( itemElem.attribute( "lineJoinStyle", "miter" ) ); mPen.setJoinStyle( mLineJoinStyle ); mLineCapStyle = QgsSymbolLayerV2Utils::decodePenCapStyle( itemElem.attribute( "lineCapStyle", "square" ) ); mPen.setCapStyle( mLineCapStyle ); QString fontString = itemElem.attribute( "font", "" ); if ( !fontString.isEmpty() ) { mFont.fromString( fontString ); } //colors //fill color QDomNodeList fillColorList = itemElem.elementsByTagName( "fillColor" ); if ( fillColorList.size() > 0 ) { QDomElement fillColorElem = fillColorList.at( 0 ).toElement(); bool redOk, greenOk, blueOk, alphaOk; int fillRed, fillGreen, fillBlue, fillAlpha; fillRed = fillColorElem.attribute( "red" ).toDouble( &redOk ); fillGreen = fillColorElem.attribute( "green" ).toDouble( &greenOk ); fillBlue = fillColorElem.attribute( "blue" ).toDouble( &blueOk ); fillAlpha = fillColorElem.attribute( "alpha" ).toDouble( &alphaOk ); if ( redOk && greenOk && blueOk && alphaOk ) { mBrush.setColor( QColor( fillRed, fillGreen, fillBlue, fillAlpha ) ); } } else { mBrush.setColor( QColor( itemElem.attribute( "brushColor", "#000000" ) ) ); } //fill color 2 QDomNodeList fillColor2List = itemElem.elementsByTagName( "fillColor2" ); if ( fillColor2List.size() > 0 ) { QDomElement fillColor2Elem = fillColor2List.at( 0 ).toElement(); bool redOk, greenOk, blueOk, alphaOk; int fillRed, fillGreen, fillBlue, fillAlpha; fillRed = fillColor2Elem.attribute( "red" ).toDouble( &redOk ); fillGreen = fillColor2Elem.attribute( "green" ).toDouble( &greenOk ); fillBlue = fillColor2Elem.attribute( "blue" ).toDouble( &blueOk ); fillAlpha = fillColor2Elem.attribute( "alpha" ).toDouble( &alphaOk ); if ( redOk && greenOk && blueOk && alphaOk ) { mBrush2.setColor( QColor( fillRed, fillGreen, fillBlue, fillAlpha ) ); } } else { mBrush2.setColor( QColor( itemElem.attribute( "brush2Color", "#ffffff" ) ) ); } //stroke color QDomNodeList strokeColorList = itemElem.elementsByTagName( "strokeColor" ); if ( strokeColorList.size() > 0 ) { QDomElement strokeColorElem = strokeColorList.at( 0 ).toElement(); bool redOk, greenOk, blueOk, alphaOk; int strokeRed, strokeGreen, strokeBlue, strokeAlpha; strokeRed = strokeColorElem.attribute( "red" ).toDouble( &redOk ); strokeGreen = strokeColorElem.attribute( "green" ).toDouble( &greenOk ); strokeBlue = strokeColorElem.attribute( "blue" ).toDouble( &blueOk ); strokeAlpha = strokeColorElem.attribute( "alpha" ).toDouble( &alphaOk ); if ( redOk && greenOk && blueOk && alphaOk ) { mPen.setColor( QColor( strokeRed, strokeGreen, strokeBlue, strokeAlpha ) ); } } else { mPen.setColor( QColor( itemElem.attribute( "penColor", "#000000" ) ) ); } //font color QDomNodeList textColorList = itemElem.elementsByTagName( "textColor" ); if ( textColorList.size() > 0 ) { QDomElement textColorElem = textColorList.at( 0 ).toElement(); bool redOk, greenOk, blueOk, alphaOk; int textRed, textGreen, textBlue, textAlpha; textRed = textColorElem.attribute( "red" ).toDouble( &redOk ); textGreen = textColorElem.attribute( "green" ).toDouble( &greenOk ); textBlue = textColorElem.attribute( "blue" ).toDouble( &blueOk ); textAlpha = textColorElem.attribute( "alpha" ).toDouble( &alphaOk ); if ( redOk && greenOk && blueOk && alphaOk ) { mFontColor = QColor( textRed, textGreen, textBlue, textAlpha ); } } else { mFontColor.setNamedColor( itemElem.attribute( "fontColor", "#000000" ) ); } //style delete mStyle; mStyle = 0; QString styleString = itemElem.attribute( "style", "" ); setStyle( tr( styleString.toLocal8Bit().data() ) ); mUnits = ( ScaleBarUnits )itemElem.attribute( "units" ).toInt(); mAlignment = ( Alignment )( itemElem.attribute( "alignment", "0" ).toInt() ); //map int mapId = itemElem.attribute( "mapId", "-1" ).toInt(); if ( mapId >= 0 ) { const QgsComposerMap* composerMap = mComposition->getComposerMapById( mapId ); mComposerMap = composerMap; if ( mComposerMap ) { connect( mComposerMap, SIGNAL( extentChanged() ), this, SLOT( updateSegmentSize() ) ); connect( mComposerMap, SIGNAL( destroyed( QObject* ) ), this, SLOT( invalidateCurrentMap() ) ); } } updateSegmentSize(); //restore general composer item properties QDomNodeList composerItemList = itemElem.elementsByTagName( "ComposerItem" ); if ( composerItemList.size() > 0 ) { QDomElement composerItemElem = composerItemList.at( 0 ).toElement(); _readXML( composerItemElem, doc ); } return true; }