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 
00033 
00049 KDChartParams::KDChartFrameSettings::KDChartFrameSettings()
00050 {
00051     _dataRow = 0;
00052     _dataCol = 0;
00053     _data3rd = 0;
00054     _frame   = 0;
00055     resetFrame();
00056     _outerGapX = 0;
00057     _outerGapY = 0;
00058     _innerGapX = 0;
00059     _innerGapY = 0;
00060     _addFrameWidthToLayout = true;
00061     _addFrameHeightToLayout = true;
00062 }
00063 
00064 
00078 KDChartParams::KDChartFrameSettings::KDChartFrameSettings(
00079         uint           dataRow,
00080         uint           dataCol,
00081         uint           data3rd,
00082         const KDFrame& frame,
00083         int            outerGapX,
00084         int            outerGapY,
00085         int            innerGapX,
00086         int            innerGapY,
00087         bool           addFrameWidthToLayout,
00088         bool           addFrameHeightToLayout )
00089   : _dataRow( dataRow ),
00090     _dataCol( dataCol ),
00091     _data3rd( data3rd ),
00092     _frame( 0 ),
00093     _outerGapX( outerGapX ),
00094     _outerGapY( outerGapY ),
00095     _innerGapX( innerGapX ),
00096     _innerGapY( innerGapY ),
00097     _addFrameWidthToLayout(  addFrameWidthToLayout ),
00098 _addFrameHeightToLayout( addFrameHeightToLayout )
00099 {
00100     resetFrame();
00101     KDFrame::deepCopy(*_frame, frame);
00102 }
00103 
00104 
00105 
00109 KDChartParams::KDChartFrameSettings::~KDChartFrameSettings()
00110 {
00111     delete _frame;
00112 }
00113 
00122 bool KDChartParams::KDChartFrameSettings::readFrameSettingsNode( const QDomElement& element,
00123         KDChartFrameSettings& settings,
00124         uint& areaId )
00125 {
00126     bool ok = true;
00127     KDFrame tempFrame;
00128     int tempId = KDChartEnums::AreaUNKNOWN;
00129     int tempDataRow = 0; // these 3 need initialization since they were not
00130     int tempDataCol = 0;//  existent in previous releases of KDChart
00131     int tempData3rd = 0;
00132 
00133     int tempOuterGapX, tempOuterGapY, tempInnerGapX, tempInnerGapY;
00134     bool tempAddFrameWidthToLayout, tempAddFrameHeightToLayout;
00135     QDomNode node = element.firstChild();
00136     while( !node.isNull() ) {
00137         QDomElement element = node.toElement();
00138         if( !element.isNull() ) { // was really an element
00139             QString tagName = element.tagName();
00140             if( tagName == "Frame" ) {
00141                 ok = ok & KDFrame::readFrameNode( element, tempFrame );
00142             } else if( tagName == "AreaId" ) {
00143                 ok = ok & KDXML::readIntNode( element, tempId );
00144             } else if( tagName == "DataRow" ) {
00145                 ok = ok & KDXML::readIntNode( element, tempDataRow );
00146             } else if( tagName == "DataCol" ) {
00147                 ok = ok & KDXML::readIntNode( element, tempDataCol );
00148             } else if( tagName == "Data3rd" ) {
00149                 ok = ok & KDXML::readIntNode( element, tempData3rd );
00150             } else if( tagName == "OuterGapX" ) {
00151                 ok = ok & KDXML::readIntNode( element, tempOuterGapX );
00152             } else if( tagName == "OuterGapY" ) {
00153                 ok = ok & KDXML::readIntNode( element, tempOuterGapY );
00154             } else if( tagName == "InnerGapX" ) {
00155                 ok = ok & KDXML::readIntNode( element, tempInnerGapX );
00156             } else if( tagName == "InnerGapY" ) {
00157                 ok = ok & KDXML::readIntNode( element, tempInnerGapY );
00158             } else if( tagName == "AddFrameWidthToLayout" ) {
00159                 ok = ok & KDXML::readBoolNode( element, tempAddFrameWidthToLayout );
00160             } else if( tagName == "AddFrameHeightToLayout" ) {
00161                 ok = ok & KDXML::readBoolNode( element, tempAddFrameHeightToLayout );
00162             } else {
00163                 qDebug( "Unknown tag in frame settings" );
00164             }
00165         }
00166         node = node.nextSibling();
00167     }
00168 
00169     if( ok ) {
00170         settings.resetFrame();
00171         KDFrame::deepCopy(*settings._frame, tempFrame);
00172 
00173         settings._dataRow   = tempDataRow;
00174         settings._dataCol   = tempDataCol;
00175         settings._data3rd   = tempData3rd;
00176         settings._outerGapX = tempOuterGapX;
00177         settings._outerGapY = tempOuterGapY;
00178         settings._innerGapX = tempInnerGapX;
00179         settings._innerGapY = tempInnerGapY;
00180         settings._addFrameWidthToLayout = tempAddFrameWidthToLayout;
00181         settings._addFrameHeightToLayout = tempAddFrameHeightToLayout;
00182         areaId = tempId;
00183     }
00184 
00185     return ok;
00186 }
00187 
00188 
00189 
00255 void KDChartParams::KDChartFrameSettings::createFrameSettingsNode( QDomDocument& document,
00256         QDomNode& parent,
00257         const QString& elementName,
00258         const KDChartParams::KDChartFrameSettings* settings,
00259         uint areaId )
00260 {
00261     QDomElement frameSettingsElement = document.createElement( elementName );
00262     parent.appendChild( frameSettingsElement );
00263     if( settings->_frame )
00264         KDFrame::createFrameNode( document, frameSettingsElement, "Frame",
00265                                   *settings->_frame );
00266     KDXML::createIntNode( document, frameSettingsElement, "AreaId",
00267             areaId );
00268     KDXML::createIntNode( document, frameSettingsElement, "DataRow",
00269             settings->_dataRow );
00270     KDXML::createIntNode( document, frameSettingsElement, "DataCol",
00271             settings->_dataCol );
00272     KDXML::createIntNode( document, frameSettingsElement, "Data3rd",
00273             settings->_data3rd );
00274     KDXML::createIntNode( document, frameSettingsElement, "OuterGapX",
00275             settings->_outerGapX );
00276     KDXML::createIntNode( document, frameSettingsElement, "OuterGapY",
00277             settings->_outerGapY );
00278     KDXML::createIntNode( document, frameSettingsElement, "InnerGapX",
00279             settings->_innerGapX );
00280     KDXML::createIntNode( document, frameSettingsElement, "InnerGapY",
00281             settings->_innerGapY );
00282     KDXML::createBoolNode( document, frameSettingsElement,
00283             "AddFrameWidthToLayout",
00284             settings->_addFrameWidthToLayout );
00285     KDXML::createBoolNode( document, frameSettingsElement,
00286             "AddFrameHeightToLayout",
00287             settings->_addFrameHeightToLayout );
00288 }
KDE Home | KDE Accessibility Home | Description of Access Keys