From b7397db519096ff8f222004cfe0dcab22c10682d Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 5 May 2011 10:54:33 +0200 Subject: [PATCH 1/4] Fixed Sankore-7 issue --- src/board/UBLibraryController.cpp | 5 +++++ src/board/UBLibraryController.h | 1 + src/gui/UBLibActionBar.cpp | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/board/UBLibraryController.cpp b/src/board/UBLibraryController.cpp index 745187d2..1374e5d4 100644 --- a/src/board/UBLibraryController.cpp +++ b/src/board/UBLibraryController.cpp @@ -83,6 +83,11 @@ UBLibraryController::UBLibraryController(QWidget *pParentWidget, UBBoardControll } +bool UBLibraryController::canItemsOnElementBeDeleted(UBLibElement *pElement) +{ + return !pElement->path().toLocalFile().startsWith(UBSettings::settings()->uniboardShapeLibraryDirectory()); +} + void UBLibraryController::createInternalWidgetItems() { QStringList toolUris = UBToolsManager::manager()->allToolIDs(); diff --git a/src/board/UBLibraryController.h b/src/board/UBLibraryController.h index 2a84361d..2596d87c 100644 --- a/src/board/UBLibraryController.h +++ b/src/board/UBLibraryController.h @@ -109,6 +109,7 @@ class UBLibraryController : public QObject QString favoritePath(); void createNewFolder(QString name, UBLibElement* parentElem); + bool canItemsOnElementBeDeleted(UBLibElement *pElement); signals: void dialogClosed(int state); diff --git a/src/gui/UBLibActionBar.cpp b/src/gui/UBLibActionBar.cpp index 2ebd73ea..d02e36f6 100644 --- a/src/gui/UBLibActionBar.cpp +++ b/src/gui/UBLibActionBar.cpp @@ -337,7 +337,7 @@ void UBLibActionBar::onSelectionChanged(QList itemList, bool isI mpFavoriteAction->setEnabled(bEnable); mpSocialAction->setEnabled(bEnable); - mpDeleteAction->setEnabled(bEnable); + mpDeleteAction->setEnabled(bEnable && libraryController()->canItemsOnElementBeDeleted(itemList.at(0))); } /** From 4eea0597ed91f51203aad958fdca95bea5cff123 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 5 May 2011 15:21:41 +0200 Subject: [PATCH 2/4] Added new files --- Sankore_3.1.pro | 6 ++ src/core/UBApplication.cpp | 5 ++ src/frameworks/UBFileSystemUtils.cpp | 5 +- src/transition/UniboardSankoreTransition.cpp | 66 ++++++++++++++++++++ src/transition/UniboardSankoreTransition.h | 27 ++++++++ thirdparty/xpdf/xpdf-3.02/xpdf/Makefile | 2 +- 6 files changed, 106 insertions(+), 5 deletions(-) create mode 100644 src/transition/UniboardSankoreTransition.cpp create mode 100644 src/transition/UniboardSankoreTransition.h diff --git a/Sankore_3.1.pro b/Sankore_3.1.pro index 853344b3..80055fe3 100644 --- a/Sankore_3.1.pro +++ b/Sankore_3.1.pro @@ -346,3 +346,9 @@ INSTALLS = UB_ETC \ UB_THIRDPARTY_INTERACTIVE OTHER_FILES += + +HEADERS += \ + src/transition/UniboardSankoreTransition.h + +SOURCES += \ + src/transition/UniboardSankoreTransition.cpp diff --git a/src/core/UBApplication.cpp b/src/core/UBApplication.cpp index 623ed36b..efd5a46f 100644 --- a/src/core/UBApplication.cpp +++ b/src/core/UBApplication.cpp @@ -45,6 +45,8 @@ #include "ui_mainWindow.h" +#include "transition/UniboardSankoreTransition.h" + QPointer UBApplication::undoStack; UBApplicationController* UBApplication::applicationController = 0; @@ -297,6 +299,9 @@ int UBApplication::exec(const QString& pFileToImport) UBLibraryController::preloadFirstOnlineLibrary(); + UniboardSankoreTransition* transition = new UniboardSankoreTransition(); + transition->backupUniboardDirectory(); + return QApplication::exec(); } diff --git a/src/frameworks/UBFileSystemUtils.cpp b/src/frameworks/UBFileSystemUtils.cpp index d811d2bb..b50935c5 100644 --- a/src/frameworks/UBFileSystemUtils.cpp +++ b/src/frameworks/UBFileSystemUtils.cpp @@ -154,8 +154,7 @@ QStringList UBFileSystemUtils::allFiles(const QString& pDirPath) QFileInfoList UBFileSystemUtils::allElementsInDirectory(const QString& pDirPath) { QDir dir = QDir(pDirPath); - dir.setFilter(QDir::Files | QDir::Dirs | - QDir::NoDotAndDotDot | QDir::NoSymLinks); + dir.setFilter(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks); dir.setSorting(QDir::DirsFirst); return QFileInfoList(dir.entryInfoList()); @@ -164,8 +163,6 @@ QFileInfoList UBFileSystemUtils::allElementsInDirectory(const QString& pDirPath) bool UBFileSystemUtils::deleteDir(const QString& pDirPath) { - //qDebug() << "UBFileSystemUtils::deleteDir.start" << pDirPath; - if (pDirPath == "" || pDirPath == "." || pDirPath == "..") return false; diff --git a/src/transition/UniboardSankoreTransition.cpp b/src/transition/UniboardSankoreTransition.cpp new file mode 100644 index 00000000..7b19206f --- /dev/null +++ b/src/transition/UniboardSankoreTransition.cpp @@ -0,0 +1,66 @@ +#include "UniboardSankoreTransition.h" +#include "core/UBSettings.h" +#include "frameworks/UBDesktopServices.h" +#include "frameworks/UBFileSystemUtils.h" + +UniboardSankoreTransition::UniboardSankoreTransition(QObject *parent) : + QObject(parent) +{ + mUniboardSourceDirectory = UBDesktopServices::storageLocation(QDesktopServices::DataLocation); + mUniboardSourceDirectory.replace("Sankore/Sankore 3.1", "Mnemis/Uniboard"); +} + +bool UniboardSankoreTransition::backupUniboardDirectory() +{ + 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; +} + + +void UniboardSankoreTransition::rollbackDocumentsTransition(QFileInfoList& fileInfoList) +{ + QFileInfoList::iterator fileInfo; + for (fileInfo = fileInfoList.begin(); fileInfo != fileInfoList.end(); fileInfo += 1) { + if (fileInfo->isDir() && fileInfo->fileName().startsWith("Uniboard Document ")){ + QString sankoreDocumentName = fileInfo->fileName(); + sankoreDocumentName.replace("Uniboard","Sankore"); + QString sankoreDocumentDirectoryPath = UBSettings::uniboardDocumentDirectory() + "/" + sankoreDocumentName; + if (QFileInfo(sankoreDocumentDirectoryPath).exists()){ + UBFileSystemUtils::deleteDir(sankoreDocumentDirectoryPath); + } + } + } +} + +void UniboardSankoreTransition::documentTransition() +{ + QString uniboardDocumentDirectory = mUniboardSourceDirectory + "/document"; + QString sankoreDocumentDirectory = UBSettings::uniboardDocumentDirectory(); + + QFileInfoList fileInfoList = UBFileSystemUtils::allElementsInDirectory(uniboardDocumentDirectory); + + QFileInfoList::iterator fileInfo; + bool result = true; + 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); + } + } + + if (!result){ + qWarning() << "The transaction has failed during the copy of the " + fileInfo->filePath() + " document."; + rollbackDocumentsTransition(fileInfoList); + } + else { + UBFileSystemUtils::deleteDir(mUniboardSourceDirectory); + } +} \ No newline at end of file diff --git a/src/transition/UniboardSankoreTransition.h b/src/transition/UniboardSankoreTransition.h new file mode 100644 index 00000000..2ff7eed8 --- /dev/null +++ b/src/transition/UniboardSankoreTransition.h @@ -0,0 +1,27 @@ +#ifndef UNIBOARDSANKORETRANSITION_H +#define UNIBOARDSANKORETRANSITION_H + +#include +#include + +class UniboardSankoreTransition : public QObject +{ + Q_OBJECT +public: + explicit UniboardSankoreTransition(QObject *parent = 0); + bool backupUniboardDirectory(); + void documentTransition(); + +private: + void rollbackDocumentsTransition(QFileInfoList& fileInfoList); + +protected: + QString mUniboardSourceDirectory; + +signals: + +public slots: + +}; + +#endif // UNIBOARDSANKORETRANSITION_H diff --git a/thirdparty/xpdf/xpdf-3.02/xpdf/Makefile b/thirdparty/xpdf/xpdf-3.02/xpdf/Makefile index 054b0178..8fc95fb4 100644 --- a/thirdparty/xpdf/xpdf-3.02/xpdf/Makefile +++ b/thirdparty/xpdf/xpdf-3.02/xpdf/Makefile @@ -26,7 +26,7 @@ LDFLAGS = T1LIBS = FTLIBS = -XLIBS = -lX11 +XLIBS = -lXt -lXext -lSM -lICE -lX11 SPLASHLIBS = -L$(SPLASHLIBDIR) -lsplash From 1c62ce54aeb911cbc2802e50677c398c05328b36 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 5 May 2011 15:32:02 +0200 Subject: [PATCH 3/4] Modifier the data application path --- src/core/UBSettings.cpp | 5 +++-- src/transition/UniboardSankoreTransition.cpp | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index 6c117f7e..da6aeee1 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -731,8 +731,9 @@ QString UBSettings::uniboardDataDirectory() // ", defaulting to " + UBDesktopServices::storageLocation(QDesktopServices::DataLocation); } } - - return UBDesktopServices::storageLocation(QDesktopServices::DataLocation); + QString qtDataPath = UBFileSystemUtils::normalizeFilePath(UBDesktopServices::storageLocation(QDesktopServices::DataLocation)); + qtDataPath.replace("/Sankore 3.1", ""); + return qtDataPath; } diff --git a/src/transition/UniboardSankoreTransition.cpp b/src/transition/UniboardSankoreTransition.cpp index 7b19206f..18f952b4 100644 --- a/src/transition/UniboardSankoreTransition.cpp +++ b/src/transition/UniboardSankoreTransition.cpp @@ -7,7 +7,7 @@ UniboardSankoreTransition::UniboardSankoreTransition(QObject *parent) : QObject(parent) { mUniboardSourceDirectory = UBDesktopServices::storageLocation(QDesktopServices::DataLocation); - mUniboardSourceDirectory.replace("Sankore/Sankore 3.1", "Mnemis/Uniboard"); + mUniboardSourceDirectory.replace("Sankore", "Mnemis/Uniboard"); } bool UniboardSankoreTransition::backupUniboardDirectory() From de0e3ab3ec823526dfe1382cbd3c0f1939cfa0cf Mon Sep 17 00:00:00 2001 From: shibakaneki Date: Thu, 5 May 2011 15:58:04 +0200 Subject: [PATCH 4/4] - Resolved issue "Sankore-7" - Modified the document path - Removed a warning --- src/board/UBLibraryController.cpp | 1 + src/frameworks/UBDesktopServices_mac.cpp | 8 +++----- src/gui/UBLibActionBar.cpp | 5 ++++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/board/UBLibraryController.cpp b/src/board/UBLibraryController.cpp index 1374e5d4..5cd94b91 100644 --- a/src/board/UBLibraryController.cpp +++ b/src/board/UBLibraryController.cpp @@ -374,6 +374,7 @@ QList UBLibraryController::listElementsInPath(const QString& pPat QList UBLibraryController::listElementsInVirtualForlder(UBLibElement* pElement) { + Q_UNUSED(pElement); return mFavoriteList; } diff --git a/src/frameworks/UBDesktopServices_mac.cpp b/src/frameworks/UBDesktopServices_mac.cpp index c2a54bdd..472973a7 100644 --- a/src/frameworks/UBDesktopServices_mac.cpp +++ b/src/frameworks/UBDesktopServices_mac.cpp @@ -70,8 +70,7 @@ QString UBDesktopServices::storageLocation(StandardLocation type) short domain = kOnAppropriateDisk; - if (QDesktopServices::DataLocation == type - || QDesktopServices::CacheLocation == type) + if (QDesktopServices::DataLocation == type || QDesktopServices::CacheLocation == type) domain = kUserDomain; // http://developer.apple.com/documentation/Carbon/Reference/Folder_Manager/Reference/reference.html @@ -82,9 +81,8 @@ QString UBDesktopServices::storageLocation(StandardLocation type) QString path = getFullPath(ref); - if (QDesktopServices::DataLocation == type - || QDesktopServices::CacheLocation == type) - path += "/" + QCoreApplication::applicationName(); + if (QDesktopServices::DataLocation == type || QDesktopServices::CacheLocation == type) + path += "/Sankore"; return path; } diff --git a/src/gui/UBLibActionBar.cpp b/src/gui/UBLibActionBar.cpp index d02e36f6..7359cb64 100644 --- a/src/gui/UBLibActionBar.cpp +++ b/src/gui/UBLibActionBar.cpp @@ -397,7 +397,10 @@ void UBLibActionBar::dropEvent(QDropEvent *event) } else if(mpDeleteBtn == pTargetW) { - onActionTrash(); + if(mpDeleteBtn->isEnabled()) + { + onActionTrash(); + } } else if(mpSocialBtn == pTargetW) {