[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    koffice/kspread
From:       Laurent Montel <montel () kde ! org>
Date:       2004-04-30 22:02:06
Message-ID: 20040430220206.BE0E59A74 () office ! kde ! org
[Download RAW message or body]

CVS commit by mlaurent: 

Save area name


  M +22 -0     kspread_doc.cc   1.288
  M +2 -0      kspread_doc.h   1.142
  M +36 -0     kspread_util.cc   1.67
  M +4 -0      kspread_util.h   1.36


--- koffice/kspread/kspread_doc.cc  #1.287:1.288
@@ -587,4 +587,5 @@ bool KSpreadDoc::saveOasis( KoStore* sto
     xmlWriter.startElement( "office:body" );
     d->workbook->saveOasis( xmlWriter );
+    saveOasisAreaName( xmlWriter );
     xmlWriter.endElement();
     xmlWriter.endElement(); // root element
@@ -1863,4 +1864,25 @@ void KSpreadDoc::loadOasisCellValidation
 }
 
+bool KSpreadDoc::saveOasisAreaName( KoXmlWriter & xmlWriter )
+{
+    if ( listArea().count()>0 )
+    {
+        xmlWriter.startElement( "table:named-expressions" );
+        QValueList<Reference>::Iterator it;
+        for ( it = d->refs.begin(); it != d->refs.end(); ++it )
+        {
+            xmlWriter.startElement( "table:named-range" );
+
+            xmlWriter.addAttribute( "table:name", ( *it ).ref_name );
+            xmlWriter.addAttribute( "table:base-cell-address", convertRefToBase( ( \
*it ).table_name, ( *it ).rect ) ); +            xmlWriter.addAttribute( \
"table:cell-range-address", convertRefToRange( ( *it ).table_name, ( *it ).rect ) ); \
+ +            xmlWriter.endElement();
+        }
+        xmlWriter.endElement();
+    }
+    return true;
+}
+
 void KSpreadDoc::loadOasisAreaName( const QDomElement& body )
 {

--- koffice/kspread/kspread_doc.h  #1.141:1.142
@@ -443,4 +443,6 @@ public:
   virtual bool loadChildren( KoStore* _store );
   QDomElement saveAreaName( QDomDocument& doc ) ;
+    bool saveOasisAreaName( KoXmlWriter & xmlWriter );
+
   void loadAreaName( const QDomElement& element );
   void loadOasisAreaName( const QDomElement& element );

--- koffice/kspread/kspread_util.cc  #1.66:1.67
@@ -1042,2 +1042,38 @@ int util_penCompare( QPen const & pen1, 
 }
 
+
+QString convertRefToBase( const QString & table, const QRect & rect )
+{
+  QPoint bottomRight( rect.bottomRight() );
+
+  QString s( "$" );
+  s += table;
+  s += ".$";
+  s += KSpreadCell::columnName( bottomRight.x() );
+  s += '$';
+  s += QString::number( bottomRight.y() );
+
+  return s;
+}
+
+QString convertRefToRange( const QString & table, const QRect & rect )
+{
+  QPoint topLeft( rect.topLeft() );
+  QPoint bottomRight( rect.bottomRight() );
+
+  if ( topLeft == bottomRight )
+    return convertRefToBase( table, rect );
+
+  QString s( "$" );
+  s += table;
+  s += ".$";
+  s += /*util_encodeColumnLabelText*/KSpreadCell::columnName( topLeft.x() );
+  s += '$';
+  s += QString::number( topLeft.y() );
+  s += ":.$";
+  s += /*util_encodeColumnLabelText*/KSpreadCell::columnName( bottomRight.x() );
+  s += '$';
+  s += QString::number( bottomRight.y() );
+
+  return s;
+}

--- koffice/kspread/kspread_util.h  #1.35:1.36
@@ -187,3 +187,7 @@ QPen        util_toPen( QDomElement & el
 int         util_penCompare( QPen const & pen1, QPen const & pen2 );
 
+QString convertRefToRange( const QString & table, const QRect & rect );
+QString convertRefToBase( const QString & table, const QRect & rect );
+
+
 #endif


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic