[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/libs/main
From: Jan Hambrecht <jaham () gmx ! net>
Date: 2008-07-22 22:01:03
Message-ID: 1216764063.282198.26766.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 836746 by jaham:
implemented loading/saving of grid and guides from/to odf
M +52 -0 KoGridData.cpp
M +7 -4 KoGridData.h
M +94 -0 KoGuidesData.cpp
M +7 -4 KoGuidesData.h
--- trunk/koffice/libs/main/KoGridData.cpp #836745:836746
@@ -22,6 +22,8 @@
#include "KoUnit.h"
#include "KoViewConverter.h"
+#include <KoOasisSettings.h>
+#include <KoXmlWriter.h>
#include <QPainter>
#include <QRectF>
@@ -136,3 +138,53 @@
};
}
+bool KoGridData::loadOdfSettings( const KoXmlDocument & settingsDoc )
+{
+ KoOasisSettings settings( settingsDoc );
+ KoOasisSettings::Items viewSettings = settings.itemSet( "ooo:view-settings" );
+ if( viewSettings.isNull() )
+ return false;
+
+ KoOasisSettings::IndexedMap viewMap = viewSettings.indexedMap( "Views" );
+ if( viewMap.isNull() )
+ return false;
+
+ KoOasisSettings::Items firstView = viewMap.entry( 0 );
+ if( firstView.isNull() )
+ return false;
+
+ qreal gridX = firstView.parseConfigItemInt( "GridFineWidth" );
+ qreal gridY = firstView.parseConfigItemInt( "GridFineHeight" );
+ d->gridX = MM_TO_POINT( gridX / 100.0 );
+ d->gridY = MM_TO_POINT( gridY / 100.0 );
+ d->snapToGrid = firstView.parseConfigItemBool( "IsSnapToGrid" );
+
+ return true;
+}
+
+void KoGridData::saveOdfSettings( KoXmlWriter &settingsWriter )
+{
+ settingsWriter.startElement( "config:config-item" );
+ settingsWriter.addAttribute( "config:name", "IsSnapToGrid" );
+ settingsWriter.addAttribute( "config:type", "boolean" );
+ settingsWriter.addTextNode( d->snapToGrid ? "true" : "false" );
+ settingsWriter.endElement();
+
+ if( d->gridX >= 0.0 )
+ {
+ settingsWriter.startElement( "config:config-item" );
+ settingsWriter.addAttribute( "config:name", "GridFineWidth" );
+ settingsWriter.addAttribute( "config:type", "int" );
+ settingsWriter.addTextNode( QString::number( static_cast<int>( POINT_TO_MM( \
d->gridX * 100.0 ) ) ) ); + settingsWriter.endElement();
+ }
+
+ if( d->gridY >= 0.0 )
+ {
+ settingsWriter.startElement( "config:config-item" );
+ settingsWriter.addAttribute( "config:name", "GridFineHeight" );
+ settingsWriter.addAttribute( "config:type", "int" );
+ settingsWriter.addTextNode( QString::number( static_cast<int>( POINT_TO_MM( \
d->gridY * 100.0 ) ) ) ); + settingsWriter.endElement();
+ }
+}
--- trunk/koffice/libs/main/KoGridData.h #836745:836746
@@ -27,6 +27,8 @@
class QPainter;
class QRectF;
class KoViewConverter;
+class KoXmlDocument;
+class KoXmlWriter;
/**
* This class stores application-data for display-grids.
@@ -93,11 +95,12 @@
*/
void setShowGrid ( bool showGrid );
-#if 0 //TODO look at if we save or not into odf file
- void saveOasisSettings( KoXmlWriter &settingsWriter );
- void loadOasisSettings(const QDomDocument&settingsDoc);
-#endif
+ /// Loads grid data from the given setting xml document
+ bool loadOdfSettings( const KoXmlDocument & settingsDoc );
+ /// Saves grid data to the given settings xml writer
+ void saveOdfSettings( KoXmlWriter &settingsWriter );
+
/**
* Paint the grid
* @param painter the painter
--- trunk/koffice/libs/main/KoGuidesData.cpp #836745:836746
@@ -20,6 +20,9 @@
#include "KoGuidesData.h"
#include "KoViewConverter.h"
+#include <KoUnit.h>
+#include <KoOasisSettings.h>
+#include <KoXmlWriter.h>
#include <QtGui/QPainter>
@@ -27,6 +30,49 @@
{
public:
Private() : showGuideLines(true), guidesColor( Qt::lightGray ) {}
+
+ void parseHelpLine( const QString &text )
+ {
+ //<config:config-item config:name="SnapLinesDrawing" \
config:type="string">V7939H1139</config:config-item> + QString str;
+ int newPos = text.length()-1; //start to element = 1
+ for ( int pos = text.length()-1; pos >=0;--pos )
+ {
+ if ( text[pos]=='P' )
+ {
+ //point element
+ str = text.mid( pos+1, ( newPos-pos ) );
+ /*
+ QStringList listVal = QStringList::split( ",", str );
+ int posX = ( listVal[0].toInt()/100 );
+ int posY = ( listVal[1].toInt()/100 );
+ point.setAttribute("posX", MM_TO_POINT( posX ));
+ point.setAttribute("posY", MM_TO_POINT( posY ));
+ */
+ newPos = pos-1;
+ }
+ else if ( text[pos]=='V' )
+ {
+ //vertical element
+ str = text.mid( pos+1, ( newPos-pos ) );
+ //kDebug(30518)<<" vertical :"<< str;
+ qreal posX = str.toDouble() / 100.0;
+ vertGuideLines.append( MM_TO_POINT( posX ) );
+
+ newPos = ( pos-1 );
+ }
+ else if ( text[pos]=='H' )
+ {
+ //horizontal element
+ str = text.mid( pos+1, ( newPos-pos ) );
+ qreal posY = str.toDouble() / 100.0;
+ horzGuideLines.append( MM_TO_POINT( posY ) );
+
+ newPos = pos-1;
+ }
+ }
+ }
+
/// list of positions of horizontal guide lines
QList<double> horzGuideLines;
/// list of positions of vertical guide lines
@@ -124,3 +170,51 @@
{
return d->guidesColor;
}
+
+bool KoGuidesData::loadOdfSettings( const KoXmlDocument & settingsDoc )
+{
+ d->vertGuideLines.clear();
+ d->horzGuideLines.clear();
+
+ KoOasisSettings settings( settingsDoc );
+ KoOasisSettings::Items viewSettings = settings.itemSet( "ooo:view-settings" );
+ if( viewSettings.isNull() )
+ return false;
+
+ KoOasisSettings::IndexedMap viewMap = viewSettings.indexedMap( "Views" );
+ if( viewMap.isNull() )
+ return false;
+
+ KoOasisSettings::Items firstView = viewMap.entry( 0 );
+ if( firstView.isNull() )
+ return false;
+
+ QString str = firstView.parseConfigItemString( "SnapLinesDrawing" );
+ if ( !str.isEmpty() )
+ d->parseHelpLine( str );
+
+ return true;
+}
+
+void KoGuidesData::saveOdfSettings( KoXmlWriter &settingsWriter )
+{
+ settingsWriter.startElement( "config:config-item" );
+ settingsWriter.addAttribute( "config:name", "SnapLinesDrawing" );
+ settingsWriter.addAttribute( "config:type", "string" );
+
+ QString lineStr;
+
+ foreach( double h, d->horzGuideLines )
+ {
+ int tmpY = static_cast<int>( POINT_TO_MM( h * 100.0 ) );
+ lineStr += 'H' + QString::number( tmpY );
+ }
+ foreach( double v, d->vertGuideLines )
+ {
+ int tmpX = static_cast<int>( POINT_TO_MM( v * 100.0 ) );
+ lineStr += 'V' + QString::number( tmpX );
+ }
+
+ settingsWriter.addTextNode( lineStr );
+ settingsWriter.endElement(); // config:config-item
+}
--- trunk/koffice/libs/main/KoGuidesData.h #836745:836746
@@ -29,6 +29,8 @@
class KoViewConverter;
class QRectF;
class QColor;
+class KoXmlDocument;
+class KoXmlWriter;
class KOMAIN_EXPORT KoGuidesData
{
@@ -99,11 +101,12 @@
/// Returns the color of the guide lines.
QColor guidesColor() const;
-#if 0 //TODO
- void saveOasisSettings( KoXmlWriter &settingsWriter );
- void loadOasisSettings(const QDomDocument&settingsDoc);
-#endif
+ /// Loads guide lines from the given setting xml document
+ bool loadOdfSettings( const KoXmlDocument & settingsDoc );
+ /// Saves guide lines to the given settings xml writer
+ void saveOdfSettings( KoXmlWriter &settingsWriter );
+
private:
class Private;
Private * const d;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic