diff --git a/src/transition/UniboardSankoreTransition.cpp b/src/transition/UniboardSankoreTransition.cpp index 33de53fe..01b5fcbc 100644 --- a/src/transition/UniboardSankoreTransition.cpp +++ b/src/transition/UniboardSankoreTransition.cpp @@ -12,6 +12,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ + #include "UniboardSankoreTransition.h" #include "core/UBSettings.h" #include "frameworks/UBDesktopServices.h" @@ -90,6 +91,59 @@ void UniboardSankoreTransition::startDocumentTransition() connect(this,SIGNAL(transitioningFile(QString)),mTransitionDlg,SLOT(transitioningFile(QString))); } + +bool UniboardSankoreTransition::checkPage(QString& sankorePagePath) +{ + QFile file(sankorePagePath); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) + return false; + + QByteArray documentByteArray = file.readAll(); + file.close(); + + QString sankoreDirectory = sankorePagePath.left(sankorePagePath.indexOf("/page")); + ; + sankoreDirectory = QUrl::fromLocalFile(sankoreDirectory).toString(); + QString documentString(documentByteArray); + qDebug() << documentString; + documentString.replace("xlink:href=\"videos/","xlink:href=\"" + sankoreDirectory + "/videos/"); + + documentString.replace("xlink:href=\"widgets/","xlink:href=\"" + sankoreDirectory + "/widgets/"); + + documentString.replace("xlink:href=\"objects/","xlink:href=\"" + sankoreDirectory + "/objects/"); + + documentString.replace("xlink:href=\"audios/","xlink:href=\"" + sankoreDirectory + "/audios/"); + + qDebug() << documentString; + + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) + return false; + + file.write(documentString.toAscii()); + file.close(); + + return true; +} + +bool UniboardSankoreTransition::updateSankoreHRef(QString& sankoreDocumentPath) +{ + bool result = true; + QFileInfoList fileInfoList = UBFileSystemUtils::allElementsInDirectory(sankoreDocumentPath); + + QFileInfoList::iterator fileInfo; + QString sankoreDocumentDirectory = UBSettings::uniboardDocumentDirectory(); + + for (fileInfo = fileInfoList.begin(); fileInfo != fileInfoList.end() && result; fileInfo += 1) { + if (fileInfo->fileName().endsWith("svg")){ + qDebug() << fileInfo->absolutePath(); + QString path = fileInfo->absolutePath() + "/" + fileInfo->fileName(); + result = checkPage(path); + } + } + + return result; +} + void UniboardSankoreTransition::executeTransition() { bool result = false; @@ -109,7 +163,9 @@ void UniboardSankoreTransition::executeTransition() QString sankoreDocumentName = fileInfo->fileName(); emit transitioningFile(sankoreDocumentName); sankoreDocumentName.replace("Uniboard","Sankore"); - result = UBFileSystemUtils::copyDir(fileInfo->filePath(),sankoreDocumentDirectory + "/" + sankoreDocumentName); + QString sankoreDocumentPath = sankoreDocumentDirectory + "/" + sankoreDocumentName; + result = UBFileSystemUtils::copyDir(fileInfo->filePath(),sankoreDocumentPath); + result &= updateSankoreHRef(sankoreDocumentPath); } } diff --git a/src/transition/UniboardSankoreTransition.h b/src/transition/UniboardSankoreTransition.h index f5c178f4..e5aec048 100644 --- a/src/transition/UniboardSankoreTransition.h +++ b/src/transition/UniboardSankoreTransition.h @@ -39,6 +39,8 @@ public: explicit UniboardSankoreTransition(QObject *parent = 0); ~UniboardSankoreTransition(); void documentTransition(); + bool checkPage(QString& sankorePagePath); + bool updateSankoreHRef(QString &sankoreDocumentPath); void executeTransition();