[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/libs
From: Fredrik Edemar <f_edemar () linux ! se>
Date: 2006-06-28 18:16:09
Message-ID: 1151518569.959311.12908.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 555922 by fedemar:
save the versions
M +44 -0 kofficecore/KoDocument.cpp
M +31 -1 store/KoStore.cpp
M +7 -0 store/KoStore.h
--- trunk/koffice/libs/kofficecore/KoDocument.cpp #555921:555922
@@ -1056,6 +1056,43 @@
return false;
}
+ if ( !d->m_versionInfo.isEmpty() )
+ {
+ if ( store->open( "VersionList.xml" ) )
+ {
+ KoStoreDevice dev( store );
+ KoXmlWriter* xmlWriter = KoDocument::createOasisXmlWriter( &dev,
+ "VL:version-list" );
+ for (int i = 0; i < d->m_versionInfo.size(); ++i)
+ {
+ KoVersionInfo *version = &d->m_versionInfo[i];
+ xmlWriter->startElement( "VL:version-entry" );
+ xmlWriter->addAttribute( "VL:title", version->title );
+ xmlWriter->addAttribute( "VL:comment", version->comment );
+ xmlWriter->addAttribute( "VL:creator", version->saved_by );
+ xmlWriter->addAttribute( "dc:date-time", \
version->date.toString(Qt::ISODate) ); + xmlWriter->endElement();
+ }
+ xmlWriter->endElement(); // root element
+ xmlWriter->endDocument();
+ delete xmlWriter;
+ store->close();
+ manifestWriter->addManifestEntry( "VersionList.xml", "text/xml" );
+
+ for (int i = 0; i < d->m_versionInfo.size(); ++i)
+ {
+ KoVersionInfo *version = &d->m_versionInfo[i];
+ store->addDataToFile( version->data, "Versions/" + version->title );
+ }
+ }
+ else
+ {
+ d->lastErrorMessage = i18n( "Not able to write '%1'. Partition full?", \
QString("VersionList.xml") ); + delete store;
+ return false;
+ }
+ }
+
// Write out manifest file
if ( !oasisStore.closeManifestWriter() )
{
@@ -2163,6 +2200,13 @@
KoXmlWriter* writer = new KoXmlWriter( dev );
writer->startDocument( rootElementName );
writer->startElement( rootElementName );
+
+ if ( qstrcmp( rootElementName, "VL:version-list" ) == 0 ) {
+ writer->addAttribute( "xmlns:VL", KoXmlNS::VL );
+ writer->addAttribute( "xmlns:dc", KoXmlNS::dc );
+ return writer;
+ }
+
writer->addAttribute( "xmlns:office", KoXmlNS::office );
writer->addAttribute( "xmlns:meta", KoXmlNS::meta );
--- trunk/koffice/libs/store/KoStore.cpp #555921:555922
@@ -456,6 +456,37 @@
return true;
}
+bool KoStore::addDataToFile( QByteArray &buffer, const QString &destName )
+{
+ QBuffer file( &buffer );
+ if ( !file.open( QIODevice::ReadOnly ))
+ {
+ return false;
+ }
+
+ if ( !open ( destName ) )
+ {
+ return false;
+ }
+
+ QByteArray data;
+ data.resize( 8 * 1024 );
+
+ uint total = 0;
+ for ( int block = 0; ( block = file.read( data.data(), data.size() ) ) > 0; total \
+= block ) + {
+ data.resize(block);
+ if ( write( data ) != block )
+ return false;
+ data.resize(8*1024);
+ }
+
+ close();
+ file.close();
+
+ return true;
+}
+
bool KoStore::extractFile ( const QString &srcName, const QString &fileName )
{
QFile file( fileName );
@@ -465,7 +496,6 @@
bool KoStore::extractFile( const QString &srcName, QByteArray &data )
{
- kdDebug() << "hello" << endl;
QBuffer buffer( &data );
return extractFile( srcName, buffer );
}
--- trunk/koffice/libs/store/KoStore.h #555921:555922
@@ -221,6 +221,13 @@
bool addLocalFile( const QString &fileName, const QString &destName );
/**
+ * Imports data into a store
+ * @param buffer data
+ * @param destName file in the store
+ */
+ bool addDataToFile( QByteArray &buffer, const QString &destName );
+
+ /**
* Imports a local directory
* @param dirPath path to the directory on a disk
* @param dest path in the store where the directory should get saved
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic