Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgslegendstyle.cpp 3 : : --------------------- 4 : : begin : March 2013 5 : : copyright : (C) 2013 by Radim Blazek 6 : : email : radim.blazek@gmail.com 7 : : ***************************************************************************/ 8 : : 9 : : /*************************************************************************** 10 : : * * 11 : : * This program is free software; you can redistribute it and/or modify * 12 : : * it under the terms of the GNU General Public License as published by * 13 : : * the Free Software Foundation; either version 2 of the License, or * 14 : : * (at your option) any later version. * 15 : : * * 16 : : ***************************************************************************/ 17 : : 18 : : #include "qgslegendstyle.h" 19 : : #include "qgsfontutils.h" 20 : : #include "qgssettings.h" 21 : : #include "qgis.h" 22 : : #include "qgsreadwritecontext.h" 23 : : 24 : : #include <QFont> 25 : : #include <QMap> 26 : : #include <QString> 27 : : #include <QDomElement> 28 : : #include <QDomDocument> 29 : : #include <QDomNode> 30 : : 31 : 0 : QgsLegendStyle::QgsLegendStyle() 32 : : { 33 : 0 : } 34 : : 35 : 0 : void QgsLegendStyle::setMargin( double margin ) 36 : : { 37 : 0 : mMarginMap[Top] = margin; 38 : 0 : mMarginMap[Bottom] = margin; 39 : 0 : mMarginMap[Left] = margin; 40 : 0 : mMarginMap[Right] = margin; 41 : 0 : } 42 : : 43 : 0 : void QgsLegendStyle::writeXml( const QString &name, QDomElement &elem, QDomDocument &doc, const QgsReadWriteContext & ) const 44 : : { 45 : 0 : if ( elem.isNull() ) 46 : 0 : return; 47 : : 48 : 0 : QDomElement styleElem = doc.createElement( QStringLiteral( "style" ) ); 49 : : 50 : 0 : styleElem.setAttribute( QStringLiteral( "name" ), name ); 51 : 0 : styleElem.setAttribute( QStringLiteral( "alignment" ), QString::number( mAlignment ) ); 52 : : 53 : 0 : if ( !qgsDoubleNear( mMarginMap[Top], 0.0 ) ) 54 : 0 : styleElem.setAttribute( QStringLiteral( "marginTop" ), QString::number( mMarginMap[Top] ) ); 55 : 0 : if ( !qgsDoubleNear( mMarginMap[Bottom], 0.0 ) ) 56 : 0 : styleElem.setAttribute( QStringLiteral( "marginBottom" ), QString::number( mMarginMap[Bottom] ) ); 57 : 0 : if ( !qgsDoubleNear( mMarginMap[Left], 0.0 ) ) 58 : 0 : styleElem.setAttribute( QStringLiteral( "marginLeft" ), QString::number( mMarginMap[Left] ) ); 59 : 0 : if ( !qgsDoubleNear( mMarginMap[Right], 0.0 ) ) 60 : 0 : styleElem.setAttribute( QStringLiteral( "marginRight" ), QString::number( mMarginMap[Right] ) ); 61 : : 62 : 0 : styleElem.appendChild( QgsFontUtils::toXmlElement( mFont, doc, QStringLiteral( "styleFont" ) ) ); 63 : : 64 : 0 : elem.appendChild( styleElem ); 65 : 0 : } 66 : : 67 : 0 : void QgsLegendStyle::readXml( const QDomElement &elem, const QDomDocument &doc, const QgsReadWriteContext & ) 68 : : { 69 : 0 : Q_UNUSED( doc ) 70 : 0 : if ( elem.isNull() ) return; 71 : : 72 : 0 : if ( !QgsFontUtils::setFromXmlChildNode( mFont, elem, QStringLiteral( "styleFont" ) ) ) 73 : : { 74 : 0 : mFont.fromString( elem.attribute( QStringLiteral( "font" ) ) ); 75 : 0 : } 76 : : 77 : 0 : mMarginMap[Top] = elem.attribute( QStringLiteral( "marginTop" ), QStringLiteral( "0" ) ).toDouble(); 78 : 0 : mMarginMap[Bottom] = elem.attribute( QStringLiteral( "marginBottom" ), QStringLiteral( "0" ) ).toDouble(); 79 : 0 : mMarginMap[Left] = elem.attribute( QStringLiteral( "marginLeft" ), QStringLiteral( "0" ) ).toDouble(); 80 : 0 : mMarginMap[Right] = elem.attribute( QStringLiteral( "marginRight" ), QStringLiteral( "0" ) ).toDouble(); 81 : : 82 : 0 : mAlignment = static_cast< Qt::Alignment >( elem.attribute( QStringLiteral( "alignment" ), QString::number( Qt::AlignLeft ) ).toInt() ); 83 : 0 : } 84 : : 85 : 0 : QString QgsLegendStyle::styleName( Style s ) 86 : : { 87 : 0 : switch ( s ) 88 : : { 89 : : case Undefined: 90 : 0 : return QString(); 91 : : case Hidden: 92 : 0 : return QStringLiteral( "hidden" ); 93 : : case Title: 94 : 0 : return QStringLiteral( "title" ); 95 : : case Group: 96 : 0 : return QStringLiteral( "group" ); 97 : : case Subgroup: 98 : 0 : return QStringLiteral( "subgroup" ); 99 : : case Symbol: 100 : 0 : return QStringLiteral( "symbol" ); 101 : : case SymbolLabel: 102 : 0 : return QStringLiteral( "symbolLabel" ); 103 : : } 104 : 0 : return QString(); 105 : 0 : } 106 : : 107 : 0 : QgsLegendStyle::Style QgsLegendStyle::styleFromName( const QString &styleName ) 108 : : { 109 : 0 : if ( styleName == QLatin1String( "hidden" ) ) 110 : 0 : return Hidden; 111 : 0 : else if ( styleName == QLatin1String( "title" ) ) 112 : 0 : return Title; 113 : 0 : else if ( styleName == QLatin1String( "group" ) ) 114 : 0 : return Group; 115 : 0 : else if ( styleName == QLatin1String( "subgroup" ) ) 116 : 0 : return Subgroup; 117 : 0 : else if ( styleName == QLatin1String( "symbol" ) ) 118 : 0 : return Symbol; 119 : 0 : else if ( styleName == QLatin1String( "symbolLabel" ) ) 120 : 0 : return SymbolLabel; 121 : 0 : return Undefined; 122 : 0 : } 123 : : 124 : 0 : QString QgsLegendStyle::styleLabel( Style s ) 125 : : { 126 : 0 : switch ( s ) 127 : : { 128 : : case Undefined: 129 : 0 : return QObject::tr( "Undefined" ); 130 : : case Hidden: 131 : 0 : return QObject::tr( "Hidden" ); 132 : : case Title: 133 : 0 : return QObject::tr( "Title" ); 134 : : case Group: 135 : 0 : return QObject::tr( "Group" ); 136 : : case Subgroup: 137 : 0 : return QObject::tr( "Subgroup" ); 138 : : case Symbol: 139 : 0 : return QObject::tr( "Symbol" ); 140 : : case SymbolLabel: 141 : 0 : return QObject::tr( "Symbol label" ); 142 : : } 143 : 0 : return QString(); 144 : 0 : }