[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