kchart

KDChartParams_frame.cpp

00001 /* -*- Mode: C++ -*-
00002    KDChart - a multi-platform charting engine
00003    */
00004 
00005 /****************************************************************************
00006  ** Copyright (C) 2001-2003 Klarälvdalens Datakonsult AB.  All rights reserved.
00007  **
00008  ** This file is part of the KDChart library.
00009  **
00010  ** This file may be distributed and/or modified under the terms of the
00011  ** GNU General Public License version 2 as published by the Free Software
00012  ** Foundation and appearing in the file LICENSE.GPL included in the
00013  ** packaging of this file.
00014  **
00015  ** Licensees holding valid commercial KDChart licenses may use this file in
00016  ** accordance with the KDChart Commercial License Agreement provided with
00017  ** the Software.
00018  **
00019  ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
00020  ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
00021  **
00022  ** See http://www.klaralvdalens-datakonsult.se/?page=products for
00023  **   information about KDChart Commercial License Agreements.
00024  **
00025  ** Contact info@klaralvdalens-datakonsult.se if any conditions of this
00026  ** licensing are not clear to you.
00027  **
00028  **********************************************************************/
00029 
00030 #include "KDChartParams.h"
00031 #include "KDXMLTools.h"
00032 
00048 KDChartParams::KDChartFrameSettings::KDChartFrameSettings()
00049 {
00050     _dataRow = 0;
00051     _dataCol = 0;
00052     _data3rd = 0;
00053     _frame   = 0;
00054     resetFrame();
00055     _outerGapX = 0;
00056     _outerGapY = 0;
00057     _innerGapX = 0;
00058     _innerGapY = 0;
00059     _addFrameWidthToLayout = true;
00060     _addFrameHeightToLayout = true;
00061 }
00062 
00063 
00077 KDChartParams::KDChartFrameSettings::KDChartFrameSettings(
00078         uint           dataRow,
00079         uint           dataCol,
00080         uint           data3rd,
00081         const KDFrame& frame,
00082         int            outerGapX,
00083         int            outerGapY,
00084         int            innerGapX,
00085         int            innerGapY,
00086         bool           addFrameWidthToLayout,
00087         bool           addFrameHeightToLayout )
00088   : _dataRow( dataRow ),
00089     _dataCol( dataCol ),
00090     _data3rd( data3rd ),
00091     _frame( 0 ),
00092     _outerGapX( outerGapX ),
00093     _outerGapY( outerGapY ),
00094     _innerGapX( innerGapX ),
00095     _innerGapY( innerGapY ),
00096     _addFrameWidthToLayout(  addFrameWidthToLayout ),
00097 _addFrameHeightToLayout( addFrameHeightToLayout )
00098 {
00099     resetFrame();
00100     KDFrame::deepCopy(*_frame, frame);
00101 }
00102 
00103 
00104 
00108 KDChartParams::KDChartFrameSettings::~KDChartFrameSettings()
00109 {
00110     delete _frame;
00111 }
00112 
00121 bool KDChartParams::KDChartFrameSettings::readFrameSettingsNode( const QDomElement& element,
00122         KDChartFrameSettings& settings,
00123         uint& areaId )
00124 {
00125     bool ok = true;
00126     KDFrame tempFrame;
00127     int tempId = KDChartEnums::AreaUNKNOWN;
00128     int tempDataRow = 0; // these 3 need initialization since they were not
00129     int tempDataCol = 0;//  existent in previous releases of KDChart
00130     int tempData3rd = 0;
00131 
00132     int tempOuterGapX, tempOuterGapY, tempInnerGapX, tempInnerGapY;
00133     bool tempAddFrameWidthToLayout, tempAddFrameHeightToLayout;
00134     QDomNode node = element.firstChild();
00135     while( !node.isNull() ) {
00136         QDomElement element = node.toElement();
00137         if( !element.isNull() ) { // was really an element
00138             QString tagName = element.tagName();
00139             if( tagName == "Frame" ) {
00140                 ok = ok & KDFrame::readFrameNode( element, tempFrame );
00141             } else if( tagName == "AreaId" ) {
00142                 ok = ok & KDXML::readIntNode( element, tempId );
00143             } else if( tagName == "DataRow" ) {
00144                 ok = ok & KDXML::readIntNode( element, tempDataRow );
00145             } else if( tagName == "DataCol" ) {
00146                 ok = ok & KDXML::readIntNode( element, tempDataCol );
00147             } else if( tagName == "Data3rd" ) {
00148                 ok = ok & KDXML::readIntNode( element, tempData3rd );
00149             } else if( tagName == "OuterGapX" ) {
00150                 ok = ok & KDXML::readIntNode( element, tempOuterGapX );
00151             } else if( tagName == "OuterGapY" ) {
00152                 ok = ok & KDXML::readIntNode( element, tempOuterGapY );
00153             } else if( tagName == "InnerGapX" ) {
00154                 ok = ok & KDXML::readIntNode( element, tempInnerGapX );
00155             } else if( tagName == "InnerGapY" ) {
00156                 ok = ok & KDXML::readIntNode( element, tempInnerGapY );
00157             } else if( tagName == "AddFrameWidthToLayout" ) {
00158                 ok = ok & KDXML::readBoolNode( element, tempAddFrameWidthToLayout );
00159             } else if( tagName == "AddFrameHeightToLayout" ) {
00160                 ok = ok & KDXML::readBoolNode( element, tempAddFrameHeightToLayout );
00161             } else {
00162                 qDebug( "Unknown tag in frame settings" );
00163             }
00164         }
00165         node = node.nextSibling();
00166     }
00167 
00168     if( ok ) {
00169         settings.resetFrame();
00170         KDFrame::deepCopy(*settings._frame, tempFrame);
00171 
00172         settings._dataRow   = tempDataRow;
00173         settings._dataCol   = tempDataCol;
00174         settings._data3rd   = tempData3rd;
00175         settings._outerGapX = tempOuterGapX;
00176         settings._outerGapY = tempOuterGapY;
00177         settings._innerGapX = tempInnerGapX;
00178         settings._innerGapY = tempInnerGapY;
00179         settings._addFrameWidthToLayout = tempAddFrameWidthToLayout;
00180         settings._addFrameHeightToLayout = tempAddFrameHeightToLayout;
00181         areaId = tempId;
00182     }
00183 
00184     return ok;
00185 }
00186 
00187 
00188 
00254 void KDChartParams::KDChartFrameSettings::createFrameSettingsNode( QDomDocument& document,
00255         QDomNode& parent,
00256         const QString& elementName,
00257         const KDChartParams::KDChartFrameSettings* settings,
00258         uint areaId )
00259 {
00260     QDomElement frameSettingsElement = document.createElement( elementName );
00261     parent.appendChild( frameSettingsElement );
00262     if( settings->_frame )
00263         KDFrame::createFrameNode( document, frameSettingsElement, "Frame",
00264                                   *settings->_frame );
00265     KDXML::createIntNode( document, frameSettingsElement, "AreaId",
00266             areaId );
00267     KDXML::createIntNode( document, frameSettingsElement, "DataRow",
00268             settings->_dataRow );
00269     KDXML::createIntNode( document, frameSettingsElement, "DataCol",
00270             settings->_dataCol );
00271     KDXML::createIntNode( document, frameSettingsElement, "Data3rd",
00272             settings->_data3rd );
00273     KDXML::createIntNode( document, frameSettingsElement, "OuterGapX",
00274             settings->_outerGapX );
00275     KDXML::createIntNode( document, frameSettingsElement, "OuterGapY",
00276             settings->_outerGapY );
00277     KDXML::createIntNode( document, frameSettingsElement, "InnerGapX",
00278             settings->_innerGapX );
00279     KDXML::createIntNode( document, frameSettingsElement, "InnerGapY",
00280             settings->_innerGapY );
00281     KDXML::createBoolNode( document, frameSettingsElement,
00282             "AddFrameWidthToLayout",
00283             settings->_addFrameWidthToLayout );
00284     KDXML::createBoolNode( document, frameSettingsElement,
00285             "AddFrameHeightToLayout",
00286             settings->_addFrameHeightToLayout );
00287 }
KDE Home | KDE Accessibility Home | Description of Access Keys