Added uniboard sankore document directory transition

preferencesAboutTextFull
Claudio Valerio 14 years ago
parent 2d4d6bbc85
commit acac135700
  1. 6
      src/core/UBApplication.cpp
  2. 3
      src/core/UBApplication.h
  3. 2
      src/frameworks/UBDesktopServices_mac.cpp
  4. 51
      src/transition/UniboardSankoreTransition.cpp
  5. 9
      src/transition/UniboardSankoreTransition.h

@ -45,7 +45,6 @@
#include "ui_mainWindow.h"
#include "transition/UniboardSankoreTransition.h"
QPointer<QUndoStack> 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();
}

@ -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;

@ -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;
}

@ -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();
}

@ -3,24 +3,29 @@
#include <QObject>
#include <QFileInfo>
#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();
};

Loading…
Cancel
Save