parent
7269e3b562
commit
2ccecf203b
@ -1,213 +0,0 @@ |
||||
/*
|
||||
* Copyright (C) 2013 Open Education Foundation |
||||
* |
||||
* Copyright (C) 2010-2013 Groupement d'Intérêt Public pour |
||||
* l'Education Numérique en Afrique (GIP ENA) |
||||
* |
||||
* This file is part of OpenBoard. |
||||
* |
||||
* OpenBoard is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU General Public License as published by |
||||
* the Free Software Foundation, version 3 of the License, |
||||
* with a specific linking exception for the OpenSSL project's |
||||
* "OpenSSL" library (or with modified versions of it that use the |
||||
* same license as the "OpenSSL" library). |
||||
* |
||||
* OpenBoard is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with OpenBoard. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/ |
||||
|
||||
|
||||
|
||||
|
||||
#include "UBImportVirtualPrinter.h" |
||||
|
||||
#include "core/UBApplication.h" |
||||
#include "core/UBPersistenceManager.h" |
||||
#include "core/UBDocumentManager.h" |
||||
|
||||
#include "document/UBDocumentProxy.h" |
||||
|
||||
#include "UBIniFileParser.h" |
||||
|
||||
#include <windows.h> |
||||
|
||||
#include "core/memcheck.h" |
||||
|
||||
QString UBImportVirtualPrinter::sOriginalDefaultPrintername = ""; |
||||
|
||||
QPointer<UBDocumentProxy> UBImportVirtualPrinter::pendingDocument; |
||||
|
||||
|
||||
UBImportVirtualPrinter::UBImportVirtualPrinter(QObject* parent) |
||||
: UBImportAdaptor(parent) |
||||
{ |
||||
// NOOP
|
||||
} |
||||
|
||||
|
||||
UBImportVirtualPrinter::~UBImportVirtualPrinter() |
||||
{ |
||||
// NOOP
|
||||
} |
||||
|
||||
|
||||
QStringList UBImportVirtualPrinter::supportedExtentions() |
||||
{ |
||||
return QStringList("ini"); |
||||
} |
||||
|
||||
|
||||
QString UBImportVirtualPrinter::importFileFilter() |
||||
{ |
||||
// we don't want user import manually ini file.
|
||||
return ""; |
||||
} |
||||
|
||||
|
||||
QString UBImportVirtualPrinter::pdfFileName(const QFile& pFile) |
||||
{ |
||||
|
||||
UBIniFileParser iniParser(pFile.fileName()); |
||||
|
||||
// check if we have 1 PDF file to import
|
||||
QString totalPdfString = iniParser.getStringValue("PDF", "Count"); |
||||
bool ok; |
||||
int totalPdf = totalPdfString.toInt(&ok); |
||||
QString pdfFilename; |
||||
|
||||
if (ok && totalPdf > 0) |
||||
{ |
||||
pdfFilename = iniParser.getStringValue("PDF", "File0"); |
||||
if (pdfFilename == "") |
||||
{ |
||||
qWarning() << "Unable to retreive PDF file name from ini file " << pFile.fileName(); |
||||
} |
||||
} |
||||
|
||||
return pdfFilename; |
||||
} |
||||
|
||||
|
||||
QStringList UBImportVirtualPrinter::emfFileNames(const QFile& pFile) |
||||
{ |
||||
|
||||
UBIniFileParser iniParser(pFile.fileName()); |
||||
|
||||
// check if we have 1 PDF file to import
|
||||
QString totalEmfString = iniParser.getStringValue("EMF", "Count"); |
||||
bool ok; |
||||
int totalEmf = totalEmfString.toInt(&ok); |
||||
QStringList emfFilenames; |
||||
|
||||
if (ok) |
||||
{ |
||||
for(int i = 0; i < totalEmf; i++) |
||||
{ |
||||
emfFilenames << iniParser.getStringValue("EMF", QString("File%1").arg(i)); |
||||
} |
||||
} |
||||
|
||||
return emfFilenames; |
||||
} |
||||
|
||||
|
||||
|
||||
void UBImportVirtualPrinter::cleanUp(const QFile& pFile, const QString& pPdfFileName, QStringList pEmfFilenames) |
||||
{ |
||||
|
||||
//restore default printer if needed
|
||||
if (UBImportVirtualPrinter::sOriginalDefaultPrintername != "") |
||||
{ |
||||
LPTSTR wDefaultPrinterName = new TCHAR[255]; |
||||
int i = UBImportVirtualPrinter::sOriginalDefaultPrintername.toWCharArray(wDefaultPrinterName); |
||||
wDefaultPrinterName[i] = 0; |
||||
SetDefaultPrinter(wDefaultPrinterName); |
||||
UBImportVirtualPrinter::sOriginalDefaultPrintername = ""; |
||||
delete[] wDefaultPrinterName; |
||||
} |
||||
|
||||
// delete tmp ini file
|
||||
if (!QFile::remove(pFile.fileName())) |
||||
{ |
||||
qWarning() << "Unable to remove file " << pFile.fileName(); |
||||
} |
||||
// delete tmp PDF file
|
||||
if (pPdfFileName != "" && !QFile::remove(pPdfFileName)) |
||||
{ |
||||
qWarning() << "Unable to remove file " << pPdfFileName; |
||||
} |
||||
|
||||
foreach(QString f, pEmfFilenames) |
||||
{ |
||||
QFile::remove(f); |
||||
} |
||||
} |
||||
|
||||
|
||||
UBDocumentProxy* UBImportVirtualPrinter::importFile(const QFile& pFile, const QString& pGroup) |
||||
{ |
||||
UBApplication::showMessage(tr("Importing Sankore printer file ...")); |
||||
UBDocumentProxy *document = 0; |
||||
|
||||
QString pdfFilename = pdfFileName(pFile); |
||||
|
||||
if (pdfFilename.size() > 0) |
||||
{ |
||||
QFile pdfFile(pdfFilename); |
||||
|
||||
document = UBDocumentManager::documentManager()->importFile(pdfFile, pGroup); |
||||
|
||||
UBIniFileParser iniParser(pFile.fileName()); |
||||
|
||||
QString documentName = iniParser.getStringValue("Document", "Name"); |
||||
|
||||
// we must update the document name otherwise the imported document will have the name of the tmp PDF file.
|
||||
if (document) |
||||
{ |
||||
if (documentName != "") |
||||
document->setMetaData(UBSettings::documentName, documentName); |
||||
|
||||
UBPersistenceManager::persistenceManager()->persistDocumentMetadata(document); |
||||
} |
||||
} |
||||
|
||||
if (!document) |
||||
{ |
||||
UBApplication::showMessage(tr("Error while importing Sankore printer file.")); |
||||
} |
||||
|
||||
cleanUp(pFile, pdfFilename, emfFileNames(pFile)); |
||||
|
||||
return document; |
||||
} |
||||
|
||||
|
||||
bool UBImportVirtualPrinter::addFileToDocument(UBDocumentProxy* pDocument, const QFile& pFile) |
||||
{ |
||||
UBApplication::showMessage(tr("Importing Sankore printer file ...")); |
||||
bool result = false; |
||||
|
||||
QString pdfFilename = pdfFileName(pFile); |
||||
|
||||
if (pdfFilename.size() > 0) |
||||
{ |
||||
QFile pdfFile(pdfFilename); |
||||
result = UBDocumentManager::documentManager()->addFileToDocument(pDocument, pdfFile); |
||||
} |
||||
|
||||
if (!result) |
||||
{ |
||||
UBApplication::showMessage(tr("Error while importing Sankore printer file.")); |
||||
} |
||||
|
||||
cleanUp(pFile, pdfFilename, emfFileNames(pFile)); |
||||
|
||||
return result; |
||||
} |
||||
|
@ -1,87 +0,0 @@ |
||||
/*
|
||||
* Copyright (C) 2013 Open Education Foundation |
||||
* |
||||
* Copyright (C) 2010-2013 Groupement d'Intérêt Public pour |
||||
* l'Education Numérique en Afrique (GIP ENA) |
||||
* |
||||
* This file is part of OpenBoard. |
||||
* |
||||
* OpenBoard is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU General Public License as published by |
||||
* the Free Software Foundation, version 3 of the License, |
||||
* with a specific linking exception for the OpenSSL project's |
||||
* "OpenSSL" library (or with modified versions of it that use the |
||||
* same license as the "OpenSSL" library). |
||||
* |
||||
* OpenBoard is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with OpenBoard. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/ |
||||
|
||||
|
||||
|
||||
|
||||
#include "UBIniFileParser.h" |
||||
|
||||
#include "core/memcheck.h" |
||||
|
||||
UBIniFileParser::UBIniFileParser(const QString& pFileName) |
||||
{ |
||||
QFile file(pFileName); |
||||
if (file.open(QIODevice::ReadOnly)) |
||||
{ |
||||
QTextStream reader(&file); |
||||
|
||||
QString catName = ""; |
||||
while (!reader.atEnd()) |
||||
{ |
||||
QString line = reader.readLine(); |
||||
catName = readLine(line, catName); |
||||
} |
||||
|
||||
file.close(); |
||||
} |
||||
|
||||
} |
||||
|
||||
QString UBIniFileParser::readLine(const QString& pLine, const QString& pCatName) |
||||
{ |
||||
if (pLine.indexOf(QChar('[')) == 0) |
||||
{ |
||||
QString cat = pLine.mid(1,pLine.indexOf(QChar(']')) -1); |
||||
mIniDico[cat] = new QHash<QString, QString>; |
||||
return cat; |
||||
} |
||||
else |
||||
{ |
||||
int equalIndex = pLine.indexOf(QChar('=')); |
||||
if (equalIndex > 0) |
||||
{ |
||||
QString key = pLine.left(equalIndex); |
||||
QString value = pLine.mid(equalIndex+1, pLine.length()-1); |
||||
mIniDico[pCatName]->insert(key, value); |
||||
} |
||||
} |
||||
return pCatName; |
||||
} |
||||
|
||||
UBIniFileParser::~UBIniFileParser() |
||||
{ |
||||
foreach(QString key, mIniDico.keys()) |
||||
{ |
||||
delete mIniDico[key]; |
||||
} |
||||
} |
||||
|
||||
QString UBIniFileParser::getStringValue(const QString& pSection, const QString& pKey) |
||||
{ |
||||
if (mIniDico[pSection]) |
||||
{ |
||||
return mIniDico[pSection]->value(pKey); |
||||
} |
||||
return ""; |
||||
} |
@ -1,52 +0,0 @@ |
||||
/*
|
||||
* Copyright (C) 2013 Open Education Foundation |
||||
* |
||||
* Copyright (C) 2010-2013 Groupement d'Intérêt Public pour |
||||
* l'Education Numérique en Afrique (GIP ENA) |
||||
* |
||||
* This file is part of OpenBoard. |
||||
* |
||||
* OpenBoard is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU General Public License as published by |
||||
* the Free Software Foundation, version 3 of the License, |
||||
* with a specific linking exception for the OpenSSL project's |
||||
* "OpenSSL" library (or with modified versions of it that use the |
||||
* same license as the "OpenSSL" library). |
||||
* |
||||
* OpenBoard is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with OpenBoard. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/ |
||||
|
||||
|
||||
|
||||
|
||||
#ifndef UBINIFILEPARSER_H_ |
||||
#define UBINIFILEPARSER_H_ |
||||
|
||||
#include <QtGui> |
||||
|
||||
/**
|
||||
* This class can parse a ini file format. |
||||
*/ |
||||
class UBIniFileParser |
||||
{ |
||||
public: |
||||
UBIniFileParser(const QString& pFile); |
||||
virtual ~UBIniFileParser(); |
||||
|
||||
/**
|
||||
* return the value for pKey in pSection. pSection is the group in which the key must be search (section are defined in [] in the ini file) |
||||
*/ |
||||
QString getStringValue(const QString& pSection, const QString& pKey); |
||||
|
||||
private: |
||||
QString readLine(const QString& pLine, const QString& catName); |
||||
QHash<QString, QHash<QString, QString>*> mIniDico; |
||||
}; |
||||
|
||||
#endif /* UBINIFILEPARSER_H_ */ |
Loading…
Reference in new issue