Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsscaleutils.cpp 3 : : --------------------- 4 : : begin : July 2012 5 : : copyright : (C) 2012 by Alexander Bruy 6 : : email : alexander dot bruy at gmail dot com 7 : : *************************************************************************** 8 : : * * 9 : : * This program is free software; you can redistribute it and/or modify * 10 : : * it under the terms of the GNU General Public License as published by * 11 : : * the Free Software Foundation; either version 2 of the License, or * 12 : : * (at your option) any later version. * 13 : : * * 14 : : ***************************************************************************/ 15 : : 16 : : #include <QFile> 17 : : #include <QDomDocument> 18 : : #include <QTextStream> 19 : : 20 : : #include "qgsscaleutils.h" 21 : : 22 : 0 : bool QgsScaleUtils::saveScaleList( const QString &fileName, const QStringList &scales, QString &errorMessage ) 23 : : { 24 : 0 : QDomDocument doc; 25 : 0 : QDomElement root = doc.createElement( QStringLiteral( "qgsScales" ) ); 26 : 0 : root.setAttribute( QStringLiteral( "version" ), QStringLiteral( "1.0" ) ); 27 : 0 : doc.appendChild( root ); 28 : : 29 : 0 : for ( int i = 0; i < scales.count(); ++i ) 30 : : { 31 : 0 : QDomElement el = doc.createElement( QStringLiteral( "scale" ) ); 32 : 0 : el.setAttribute( QStringLiteral( "value" ), scales.at( i ) ); 33 : 0 : root.appendChild( el ); 34 : 0 : } 35 : : 36 : 0 : QFile file( fileName ); 37 : 0 : if ( !file.open( QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate ) ) 38 : : { 39 : 0 : errorMessage = QStringLiteral( "Cannot write file %1:\n%2." ).arg( fileName, file.errorString() ); 40 : 0 : return false; 41 : : } 42 : : 43 : 0 : QTextStream out( &file ); 44 : 0 : doc.save( out, 4 ); 45 : 0 : return true; 46 : 0 : } 47 : : 48 : 0 : bool QgsScaleUtils::loadScaleList( const QString &fileName, QStringList &scales, QString &errorMessage ) 49 : : { 50 : 0 : QFile file( fileName ); 51 : 0 : if ( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) 52 : : { 53 : 0 : errorMessage = QStringLiteral( "Cannot read file %1:\n%2." ).arg( fileName, file.errorString() ); 54 : 0 : return false; 55 : : } 56 : : 57 : 0 : QDomDocument doc; 58 : 0 : QString errorStr; 59 : : int errorLine; 60 : : int errorColumn; 61 : : 62 : 0 : if ( !doc.setContent( &file, true, &errorStr, &errorLine, &errorColumn ) ) 63 : : { 64 : 0 : errorMessage = QStringLiteral( "Parse error at line %1, column %2:\n%3" ) 65 : 0 : .arg( errorLine ) 66 : 0 : .arg( errorColumn ) 67 : 0 : .arg( errorStr ); 68 : 0 : return false; 69 : : } 70 : : 71 : 0 : QDomElement root = doc.documentElement(); 72 : 0 : if ( root.tagName() != QLatin1String( "qgsScales" ) ) 73 : : { 74 : 0 : errorMessage = QStringLiteral( "The file is not an scales exchange file." ); 75 : 0 : return false; 76 : : } 77 : : 78 : 0 : QDomElement child = root.firstChildElement(); 79 : 0 : while ( !child.isNull() ) 80 : : { 81 : 0 : scales.append( child.attribute( QStringLiteral( "value" ) ) ); 82 : 0 : child = child.nextSiblingElement(); 83 : : } 84 : : 85 : 0 : return true; 86 : 0 : }