From 0482d9a6a53364cf17942d2239d3e8ea4a37fa91 Mon Sep 17 00:00:00 2001 From: Ivan Ilin Date: Fri, 23 Sep 2011 12:36:37 +0300 Subject: [PATCH] Paused working on CFF. Feature is temporary commented --- src/adaptors/UBCFFSubsetAdaptor.cpp | 13 +++ src/adaptors/UBImportCFF.cpp | 137 +++++++++++----------------- 2 files changed, 68 insertions(+), 82 deletions(-) diff --git a/src/adaptors/UBCFFSubsetAdaptor.cpp b/src/adaptors/UBCFFSubsetAdaptor.cpp index a6e0171f..a4812096 100644 --- a/src/adaptors/UBCFFSubsetAdaptor.cpp +++ b/src/adaptors/UBCFFSubsetAdaptor.cpp @@ -31,6 +31,9 @@ #include "UBThumbnailAdaptor.h" #include "UBSvgSubsetAdaptor.h" +#include "core/UBApplication.h" +#include "QFile" + //enum of xmlparse status //tag names definition @@ -92,6 +95,9 @@ bool UBCFFSubsetAdaptor::ConvertCFFFileToUbz(QString &cffSourceFile, UBDocumentP return false; } +// QTextStream out(&file); +// out.setCodec("UTF-8"); +// QString dta = out.readAll(); QByteArray data = file.readAll(); if (data.length() == 0) { @@ -110,6 +116,11 @@ bool UBCFFSubsetAdaptor::ConvertCFFFileToUbz(QString &cffSourceFile, UBDocumentP UBCFFSubsetAdaptor::UBCFFSubsetReader::UBCFFSubsetReader(UBDocumentProxy *proxy, QByteArray &content): mReader(content), mProxy(proxy), currentState(NONE) { +// QFile tfile("/home/ilia/Documents/tmp/2/out.xml"); +// tfile.open(QIODevice::ReadWr ite | QIODevice::Text); +// QTextStream out(&tfile); +// out << content; +// tfile.close(); } bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parse() @@ -170,6 +181,8 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseDoc() return false; } } + if (!mReader.error() == QXmlStreamReader::NoError) + UBApplication::showMessage(mReader.errorString()); return true; } diff --git a/src/adaptors/UBImportCFF.cpp b/src/adaptors/UBImportCFF.cpp index 8329eb61..ec1c250c 100644 --- a/src/adaptors/UBImportCFF.cpp +++ b/src/adaptors/UBImportCFF.cpp @@ -47,7 +47,8 @@ UBImportCFF::~UBImportCFF() QStringList UBImportCFF::supportedExtentions() { - return QStringList("iwb"); +// return QStringList("iwb"); + return QStringList(); } @@ -124,8 +125,7 @@ QString UBImportCFF::expandFileToDir(const QFile& pZipFile, const QString& pDir) { QuaZip zip(pZipFile.fileName()); - if(!zip.open(QuaZip::mdUnzip)) - { + if(!zip.open(QuaZip::mdUnzip)) { qWarning() << "Import failed. Cause zip.open(): " << zip.getZipError(); return ""; } @@ -139,124 +139,97 @@ QString UBImportCFF::expandFileToDir(const QFile& pZipFile, const QString& pDir) QString documentRootFolder; int tmpNumber = 0; QDir rootDir; - while (true) - { + while (true) { QString tempPath = QString("%1/sank%2.%3") .arg(pDir) .arg(QDateTime::currentDateTime().toString("dd_MM_yyyy_HH-mm")) .arg(tmpNumber); - if (!rootDir.exists(tempPath)) - { + if (!rootDir.exists(tempPath)) { documentRootFolder = tempPath; break; } tmpNumber++; - if (tmpNumber == 100000) - { + if (tmpNumber == 100000) { qWarning() << "Import failed. Failed to create temporary directory for iwb file"; return ""; } } - - if (!rootDir.mkdir(documentRootFolder)) - { + if (!rootDir.mkdir(documentRootFolder)) { qWarning() << "Import failed. Couse: failed to create temp folder for cff package"; } - // first we search the metadata.rdf to check the document properties - for(bool more = zip.goToFirstFile(); more; more = zip.goToNextFile()) - { - if(!zip.getCurrentFileInfo(&info)) - { - qWarning() << "Import failed. Cause: getCurrentFileInfo(): " << zip.getZipError(); - return ""; - } - - QFileInfo currentFileInfo(pDir + "/" + file.getActualFileName()); - } - - + QStringList lst = zip.getFileNameList(); QFile out; char c; - for(bool more=zip.goToFirstFile(); more; more=zip.goToNextFile()) - { - if(!zip.getCurrentFileInfo(&info)) - { + for(bool more=zip.goToFirstFile(); more; more=zip.goToNextFile()) { + if(!zip.getCurrentFileInfo(&info)) { //TOD UB 4.3 O display error to user or use crash reporter qWarning() << "Import failed. Cause: getCurrentFileInfo(): " << zip.getZipError(); return ""; } - - if(!file.open(QIODevice::ReadOnly)) - { - qWarning() << "Import failed. Cause: file.open(): " << zip.getZipError(); - return ""; - } - - if(file.getZipError()!= UNZ_OK) - { +// if(!file.open(QIODevice::ReadOnly)) { +// qWarning() << "Import failed. Cause: file.open(): " << zip.getZipError(); +// return ""; +// } + file.open(QIODevice::ReadOnly); + if(file.getZipError()!= UNZ_OK) { qWarning() << "Import failed. Cause: file.getFileName(): " << zip.getZipError(); return ""; } QString newFileName = documentRootFolder + "/" + file.getActualFileName(); - QFileInfo newFileInfo(newFileName); - rootDir.mkpath(newFileInfo.absolutePath()); + bool ends = newFileName.endsWith('/'); + if (!ends) { + + QFileInfo newFileInfo(newFileName); + rootDir.mkpath(newFileInfo.absolutePath()); + + out.setFileName(newFileName); + out.open(QIODevice::WriteOnly); + + // Slow like hell (on GNU/Linux at least), but it is not my fault. + // Not ZIP/UNZIP package's fault either. + // The slowest thing here is out.putChar(c). + QByteArray outFileContent = file.readAll(); + if (out.write(outFileContent) == -1) + { + qWarning() << "Import failed. Cause: Unable to write file"; + out.close(); + return ""; + } + while(file.getChar(&c)) + out.putChar(c); - out.setFileName(newFileName); - out.open(QIODevice::WriteOnly); - - // Slow like hell (on GNU/Linux at least), but it is not my fault. - // Not ZIP/UNZIP package's fault either. - // The slowest thing here is out.putChar(c). - QByteArray outFileContent = file.readAll(); - if (out.write(outFileContent) == -1) - { - qWarning() << "Import failed. Cause: Unable to write file"; out.close(); - return ""; - } - - while(file.getChar(&c)) - out.putChar(c); - - out.close(); - - if(file.getZipError()!=UNZ_OK) - { - qWarning() << "Import failed. Cause: " << zip.getZipError(); - return ""; - } - - if(!file.atEnd()) - { - qWarning() << "Import failed. Cause: read all but not EOF"; - return ""; - } - file.close(); - - if(file.getZipError()!=UNZ_OK) - { - qWarning() << "Import failed. Cause: file.close(): " << file.getZipError(); - return ""; + if(file.getZipError()!=UNZ_OK) { + qWarning() << "Import failed. Cause: " << zip.getZipError(); + return ""; + } + if(!file.atEnd()) { + qWarning() << "Import failed. Cause: read all but not EOF"; + return ""; + } + + file.close(); + + if(file.getZipError()!=UNZ_OK) { + qWarning() << "Import failed. Cause: file.close(): " << file.getZipError(); + return ""; + } } - } zip.close(); - if(zip.getZipError()!=UNZ_OK) - { - qWarning() << "Import failed. Cause: zip.close(): " << zip.getZipError(); - return ""; + if(zip.getZipError()!=UNZ_OK) { + qWarning() << "Import failed. Cause: zip.close(): " << zip.getZipError(); + return ""; } - return documentRootFolder; } - UBDocumentProxy* UBImportCFF::importFile(const QFile& pFile, const QString& pGroup) { Q_UNUSED(pGroup); // group is defined in the imported file