From acac1357006d5b0270bef70e708eca852668eb07 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 5 May 2011 17:56:31 +0200 Subject: [PATCH 1/6] Added uniboard sankore document directory transition --- src/core/UBApplication.cpp | 6 +-- src/core/UBApplication.h | 3 ++ src/frameworks/UBDesktopServices_mac.cpp | 2 +- src/transition/UniboardSankoreTransition.cpp | 51 +++++++++++++------- src/transition/UniboardSankoreTransition.h | 9 +++- 5 files changed, 47 insertions(+), 24 deletions(-) diff --git a/src/core/UBApplication.cpp b/src/core/UBApplication.cpp index efd5a46f..93b81710 100644 --- a/src/core/UBApplication.cpp +++ b/src/core/UBApplication.cpp @@ -45,7 +45,6 @@ #include "ui_mainWindow.h" -#include "transition/UniboardSankoreTransition.h" QPointer UBApplication::undoStack; @@ -54,6 +53,7 @@ UBBoardController* UBApplication::boardController = 0; UBWebController* UBApplication::webController = 0; UBDocumentController* UBApplication::documentController = 0; UBSoftwareUpdateController* UBApplication::softwareUpdateController = 0; +UniboardSankoreTransition* UBApplication::mUniboardSankoreTransition = 0; UBMainWindow* UBApplication::mainWindow = 0; @@ -299,8 +299,8 @@ int UBApplication::exec(const QString& pFileToImport) UBLibraryController::preloadFirstOnlineLibrary(); - UniboardSankoreTransition* transition = new UniboardSankoreTransition(); - transition->backupUniboardDirectory(); + mUniboardSankoreTransition = new UniboardSankoreTransition(); + mUniboardSankoreTransition->documentTransition(); return QApplication::exec(); } diff --git a/src/core/UBApplication.h b/src/core/UBApplication.h index 11c80374..1a516828 100644 --- a/src/core/UBApplication.h +++ b/src/core/UBApplication.h @@ -12,12 +12,14 @@ #include "qtsingleapplication.h" +#include "transition/UniboardSankoreTransition.h" namespace Ui { class MainWindow; } + class UBBoardController; class UBWebController; class UBControlView; @@ -49,6 +51,7 @@ class UBApplication : public QtSingleApplication static UBWebController* webController; static UBDocumentController* documentController; static UBSoftwareUpdateController* softwareUpdateController; + static UniboardSankoreTransition* mUniboardSankoreTransition; static UBMainWindow* mainWindow; diff --git a/src/frameworks/UBDesktopServices_mac.cpp b/src/frameworks/UBDesktopServices_mac.cpp index 472973a7..25b2279c 100644 --- a/src/frameworks/UBDesktopServices_mac.cpp +++ b/src/frameworks/UBDesktopServices_mac.cpp @@ -82,7 +82,7 @@ QString UBDesktopServices::storageLocation(StandardLocation type) QString path = getFullPath(ref); if (QDesktopServices::DataLocation == type || QDesktopServices::CacheLocation == type) - path += "/Sankore"; + path += "/Sankore/Sankore 3.1"; return path; } diff --git a/src/transition/UniboardSankoreTransition.cpp b/src/transition/UniboardSankoreTransition.cpp index 18f952b4..0018d10b 100644 --- a/src/transition/UniboardSankoreTransition.cpp +++ b/src/transition/UniboardSankoreTransition.cpp @@ -2,28 +2,19 @@ #include "core/UBSettings.h" #include "frameworks/UBDesktopServices.h" #include "frameworks/UBFileSystemUtils.h" +#include "core/UBApplication.h" UniboardSankoreTransition::UniboardSankoreTransition(QObject *parent) : QObject(parent) { - mUniboardSourceDirectory = UBDesktopServices::storageLocation(QDesktopServices::DataLocation); - mUniboardSourceDirectory.replace("Sankore", "Mnemis/Uniboard"); + mUniboardSourceDirectory = UBFileSystemUtils::normalizeFilePath(UBDesktopServices::storageLocation(QDesktopServices::DataLocation)); + mUniboardSourceDirectory.replace("Sankore/Sankore 3.1", "Mnemis/Uniboard"); } - -bool UniboardSankoreTransition::backupUniboardDirectory() +UniboardSankoreTransition::~UniboardSankoreTransition() { - bool result = false; - QString destinationDirectory = UBDesktopServices::storageLocation(QDesktopServices::DesktopLocation); - if(QFileInfo(destinationDirectory).exists() && QFileInfo(mUniboardSourceDirectory).exists()){ - if(!destinationDirectory.endsWith("/")) destinationDirectory += "/"; - result = UBFileSystemUtils::copyDir(mUniboardSourceDirectory, destinationDirectory + QFileInfo(mUniboardSourceDirectory).fileName() + "BackupData/"); - if(result) documentTransition(); - } - - return result; + delete mTransitionDlg; } - void UniboardSankoreTransition::rollbackDocumentsTransition(QFileInfoList& fileInfoList) { QFileInfoList::iterator fileInfo; @@ -41,13 +32,32 @@ void UniboardSankoreTransition::rollbackDocumentsTransition(QFileInfoList& fileI void UniboardSankoreTransition::documentTransition() { - QString uniboardDocumentDirectory = mUniboardSourceDirectory + "/document"; - QString sankoreDocumentDirectory = UBSettings::uniboardDocumentDirectory(); + if (QFileInfo(mUniboardSourceDirectory).exists()){ + QString uniboardDocumentDirectory = mUniboardSourceDirectory + "/document"; + + QFileInfoList fileInfoList = UBFileSystemUtils::allElementsInDirectory(uniboardDocumentDirectory); + + QString backupDirectoryPath = UBFileSystemUtils::normalizeFilePath(UBDesktopServices::storageLocation(QDesktopServices::DesktopLocation)); + + mTransitionDlg = new UBUpdateDlg(0, fileInfoList.count(), backupDirectoryPath); + connect(mTransitionDlg, SIGNAL(updateFiles()), this, SLOT(startDocumentTransition())); + connect(this, SIGNAL(transitionFinished(bool)), mTransitionDlg, SLOT(onFilesUpdated(bool))); + mTransitionDlg->show(); + } +} + +void UniboardSankoreTransition::startDocumentTransition() +{ + bool result = false; + QString backupDestinationPath = mTransitionDlg->backupPath() + "/UniboardBackup"; + result = UBFileSystemUtils::copyDir(mUniboardSourceDirectory, backupDestinationPath); + QString uniboardDocumentDirectory = mUniboardSourceDirectory + "/document"; QFileInfoList fileInfoList = UBFileSystemUtils::allElementsInDirectory(uniboardDocumentDirectory); QFileInfoList::iterator fileInfo; - bool result = true; + QString sankoreDocumentDirectory = UBSettings::uniboardDocumentDirectory(); + for (fileInfo = fileInfoList.begin(); fileInfo != fileInfoList.end() && result; fileInfo += 1) { if (fileInfo->isDir() && fileInfo->fileName().startsWith("Uniboard Document ")){ QString sankoreDocumentName = fileInfo->fileName(); @@ -57,10 +67,15 @@ void UniboardSankoreTransition::documentTransition() } if (!result){ - qWarning() << "The transaction has failed during the copy of the " + fileInfo->filePath() + " document."; + qWarning() << "The transaction has failed"; rollbackDocumentsTransition(fileInfoList); + UBFileSystemUtils::deleteDir(backupDestinationPath); } else { UBFileSystemUtils::deleteDir(mUniboardSourceDirectory); } + + emit transitionFinished(result); + + mTransitionDlg->hide(); } \ No newline at end of file diff --git a/src/transition/UniboardSankoreTransition.h b/src/transition/UniboardSankoreTransition.h index 2ff7eed8..6b2ba37d 100644 --- a/src/transition/UniboardSankoreTransition.h +++ b/src/transition/UniboardSankoreTransition.h @@ -3,24 +3,29 @@ #include #include +#include "gui/UBUpdateDlg.h" class UniboardSankoreTransition : public QObject { Q_OBJECT public: explicit UniboardSankoreTransition(QObject *parent = 0); - bool backupUniboardDirectory(); + ~UniboardSankoreTransition(); void documentTransition(); + private: void rollbackDocumentsTransition(QFileInfoList& fileInfoList); + UBUpdateDlg* mTransitionDlg; protected: QString mUniboardSourceDirectory; signals: + void transitionFinished(bool result); -public slots: +private slots: + void startDocumentTransition(); }; From 4eab7b78818cc074f748b2d27a7b7ea62f83157f Mon Sep 17 00:00:00 2001 From: shibakaneki Date: Fri, 6 May 2011 09:12:40 +0200 Subject: [PATCH 2/6] Corrected an issue on MAC regarding the document updater. --- src/transition/UniboardSankoreTransition.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/transition/UniboardSankoreTransition.cpp b/src/transition/UniboardSankoreTransition.cpp index 0018d10b..55ede803 100644 --- a/src/transition/UniboardSankoreTransition.cpp +++ b/src/transition/UniboardSankoreTransition.cpp @@ -8,7 +8,11 @@ UniboardSankoreTransition::UniboardSankoreTransition(QObject *parent) : QObject(parent) { mUniboardSourceDirectory = UBFileSystemUtils::normalizeFilePath(UBDesktopServices::storageLocation(QDesktopServices::DataLocation)); +#if defined(Q_WS_MACX) + mUniboardSourceDirectory.replace("Sankore/Sankore 3.1", "Uniboard"); +#else mUniboardSourceDirectory.replace("Sankore/Sankore 3.1", "Mnemis/Uniboard"); +#endif } UniboardSankoreTransition::~UniboardSankoreTransition() { @@ -78,4 +82,4 @@ void UniboardSankoreTransition::startDocumentTransition() emit transitionFinished(result); mTransitionDlg->hide(); -} \ No newline at end of file +} From 761cdbe62668c8b1ca2480aff70ccebab2bc99b0 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Fri, 6 May 2011 09:19:16 +0200 Subject: [PATCH 3/6] Fixed internal widget path --- src/board/UBLibraryController.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/board/UBLibraryController.cpp b/src/board/UBLibraryController.cpp index 5cd94b91..6d87190a 100644 --- a/src/board/UBLibraryController.cpp +++ b/src/board/UBLibraryController.cpp @@ -321,7 +321,7 @@ QImage* UBLibraryController::thumbnailForFile(UBLibElement* pElement) QList UBLibraryController::addVirtualElementsForItemPath(const QString& pPath) { QList content; - if (pPath == mInteractiveCategoryPath.toString()) + if (pPath == mInteractiveUserDirectoryPath.toLocalFile()) content << mInternalLibElements; else if (pPath == mPicturesStandardDirectoryPath.toLocalFile()){ QUrl path = QUrl::fromLocalFile(UBSettings::settings()->uniboardImageLibraryDirectory()); From bd7f6c5a86e29679dd99c0a98fe19b11766c9581 Mon Sep 17 00:00:00 2001 From: shibakaneki Date: Fri, 6 May 2011 09:36:05 +0200 Subject: [PATCH 4/6] Added a missing pri file --- Sankore_3.1.pro | 7 +------ src/transition/transition.pri | 5 +++++ 2 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 src/transition/transition.pri diff --git a/Sankore_3.1.pro b/Sankore_3.1.pro index 66c50fac..1725b19e 100644 --- a/Sankore_3.1.pro +++ b/Sankore_3.1.pro @@ -47,6 +47,7 @@ include(src/desktop/desktop.pri) include(src/web/web.pri) include(src/softwareupdate/softwareupdate.pri) include(src/paraschool/paraschool.pri) +include(src/transition/transition.pri) DEPENDPATH += thirdparty/mera/pdf-merger INCLUDEPATH += thirdparty/mera/pdf-merger @@ -346,9 +347,3 @@ INSTALLS = UB_ETC \ UB_THIRDPARTY_INTERACTIVE OTHER_FILES += - -HEADERS += \ - src/transition/UniboardSankoreTransition.h - -SOURCES += \ - src/transition/UniboardSankoreTransition.cpp diff --git a/src/transition/transition.pri b/src/transition/transition.pri new file mode 100644 index 00000000..4d2006f7 --- /dev/null +++ b/src/transition/transition.pri @@ -0,0 +1,5 @@ + +HEADERS += src/transition/UniboardSankoreTransition.h + + +SOURCES += src/transition/UniboardSankoreTransition.cpp From 80a8f04d2f1ff277364801986a68b15e351173f2 Mon Sep 17 00:00:00 2001 From: shibakaneki Date: Fri, 6 May 2011 10:14:56 +0200 Subject: [PATCH 5/6] Added an indication to inform the user that it has to reboot the application in order to access the updated documents. --- src/gui/UBUpdateDlg.cpp | 2 +- src/transition/UniboardSankoreTransition.cpp | 15 ++++++++++++++- src/transition/UniboardSankoreTransition.h | 2 ++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/gui/UBUpdateDlg.cpp b/src/gui/UBUpdateDlg.cpp index 23922a85..397a2893 100644 --- a/src/gui/UBUpdateDlg.cpp +++ b/src/gui/UBUpdateDlg.cpp @@ -61,7 +61,7 @@ void UBUpdateDlg::onFilesUpdated(bool bResult) if(bResult) { - qsMsg = tr("Files update successful"); + qsMsg = tr("Files update successful!\nPlease reboot the application to access the updated documents."); } else { diff --git a/src/transition/UniboardSankoreTransition.cpp b/src/transition/UniboardSankoreTransition.cpp index 55ede803..f84fb27c 100644 --- a/src/transition/UniboardSankoreTransition.cpp +++ b/src/transition/UniboardSankoreTransition.cpp @@ -3,6 +3,7 @@ #include "frameworks/UBDesktopServices.h" #include "frameworks/UBFileSystemUtils.h" #include "core/UBApplication.h" +#include "core/UBPersistenceManager.h" UniboardSankoreTransition::UniboardSankoreTransition(QObject *parent) : QObject(parent) @@ -13,6 +14,7 @@ UniboardSankoreTransition::UniboardSankoreTransition(QObject *parent) : #else mUniboardSourceDirectory.replace("Sankore/Sankore 3.1", "Mnemis/Uniboard"); #endif + connect(this, SIGNAL(docAdded(UBDocumentProxy*)), UBPersistenceManager::persistenceManager(), SIGNAL(documentCreated(UBDocumentProxy*))); } UniboardSankoreTransition::~UniboardSankoreTransition() { @@ -62,11 +64,14 @@ void UniboardSankoreTransition::startDocumentTransition() QFileInfoList::iterator fileInfo; QString sankoreDocumentDirectory = UBSettings::uniboardDocumentDirectory(); + QStringList qslNewDocs; + for (fileInfo = fileInfoList.begin(); fileInfo != fileInfoList.end() && result; fileInfo += 1) { if (fileInfo->isDir() && fileInfo->fileName().startsWith("Uniboard Document ")){ QString sankoreDocumentName = fileInfo->fileName(); sankoreDocumentName.replace("Uniboard","Sankore"); result = UBFileSystemUtils::copyDir(fileInfo->filePath(),sankoreDocumentDirectory + "/" + sankoreDocumentName); + qslNewDocs << sankoreDocumentName; } } @@ -75,8 +80,16 @@ void UniboardSankoreTransition::startDocumentTransition() rollbackDocumentsTransition(fileInfoList); UBFileSystemUtils::deleteDir(backupDestinationPath); } - else { + else + { UBFileSystemUtils::deleteDir(mUniboardSourceDirectory); + // Notify the application that new documents have been added +// foreach(QString qstr, qslNewDocs) +// { +// UBDocumentProxy* pDoc = new UBDocumentProxy(); +// pDoc->setMetaData(UBSettings::documentName, qstr); +// emit docAdded(pDoc); +// } } emit transitionFinished(result); diff --git a/src/transition/UniboardSankoreTransition.h b/src/transition/UniboardSankoreTransition.h index 6b2ba37d..2e28abd5 100644 --- a/src/transition/UniboardSankoreTransition.h +++ b/src/transition/UniboardSankoreTransition.h @@ -4,6 +4,7 @@ #include #include #include "gui/UBUpdateDlg.h" +#include "document/UBDocumentProxy.h" class UniboardSankoreTransition : public QObject { @@ -23,6 +24,7 @@ protected: signals: void transitionFinished(bool result); + void docAdded(UBDocumentProxy* doc); private slots: void startDocumentTransition(); From e7254eae8152df7a6bb2a81811dbaf893c4ef185 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Fri, 6 May 2011 10:49:52 +0200 Subject: [PATCH 6/6] Update sankore editor url link --- src/web/UBWebController.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/web/UBWebController.cpp b/src/web/UBWebController.cpp index db8ac1e2..48499329 100644 --- a/src/web/UBWebController.cpp +++ b/src/web/UBWebController.cpp @@ -130,7 +130,7 @@ void UBWebController::webBrowserInstance() if (mDownloadViewIsVisible) WBBrowserWindow::downloadManager()->show(); - + } void UBWebController::tutorialWebInstance() @@ -195,7 +195,7 @@ void UBWebController::tutorialWebInstance() void UBWebController::paraschoolWebInstance() { - QUrl currentUrl("http://apps.dev-paraschool.com/editor"); + QUrl currentUrl("http://host9.paraschool.net/editor/#home"); if (UBSettings::settings()->webUseExternalBrowser->get().toBool()) {