@ -2,28 +2,19 @@
# include "core/UBSettings.h"
# include "core/UBSettings.h"
# include "frameworks/UBDesktopServices.h"
# include "frameworks/UBDesktopServices.h"
# include "frameworks/UBFileSystemUtils.h"
# include "frameworks/UBFileSystemUtils.h"
# include "core/UBApplication.h"
UniboardSankoreTransition : : UniboardSankoreTransition ( QObject * parent ) :
UniboardSankoreTransition : : UniboardSankoreTransition ( QObject * parent ) :
QObject ( parent )
QObject ( parent )
{
{
mUniboardSourceDirectory = UBDesktopServices : : storageLocation ( QDesktopServices : : DataLocation ) ;
mUniboardSourceDirectory = UBFileSystemUtils : : normalizeFilePath ( UB DesktopServices : : storageLocation ( QDesktopServices : : DataLocation ) ) ;
mUniboardSourceDirectory . replace ( " Sankore " , " Mnemis/Uniboard " ) ;
mUniboardSourceDirectory . replace ( " Sankore/Sankore 3.1 " , " Mnemis/Uniboard " ) ;
}
}
UniboardSankoreTransition : : ~ UniboardSankoreTransition ( )
bool UniboardSankoreTransition : : backupUniboardDirectory ( )
{
{
bool result = false ;
delete mTransitionDlg ;
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 )
void UniboardSankoreTransition : : rollbackDocumentsTransition ( QFileInfoList & fileInfoList )
{
{
QFileInfoList : : iterator fileInfo ;
QFileInfoList : : iterator fileInfo ;
@ -41,13 +32,32 @@ void UniboardSankoreTransition::rollbackDocumentsTransition(QFileInfoList& fileI
void UniboardSankoreTransition : : documentTransition ( )
void UniboardSankoreTransition : : documentTransition ( )
{
{
QString uniboardDocumentDirectory = mUniboardSourceDirectory + " /document " ;
if ( QFileInfo ( mUniboardSourceDirectory ) . exists ( ) ) {
QString sankoreDocumentDirectory = UBSettings : : uniboardDocumentDirectory ( ) ;
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 fileInfoList = UBFileSystemUtils : : allElementsInDirectory ( uniboardDocumentDirectory ) ;
QFileInfoList : : iterator fileInfo ;
QFileInfoList : : iterator fileInfo ;
bool result = true ;
QString sankoreDocumentDirectory = UBSettings : : uniboardDocumentDirectory ( ) ;
for ( fileInfo = fileInfoList . begin ( ) ; fileInfo ! = fileInfoList . end ( ) & & result ; fileInfo + = 1 ) {
for ( fileInfo = fileInfoList . begin ( ) ; fileInfo ! = fileInfoList . end ( ) & & result ; fileInfo + = 1 ) {
if ( fileInfo - > isDir ( ) & & fileInfo - > fileName ( ) . startsWith ( " Uniboard Document " ) ) {
if ( fileInfo - > isDir ( ) & & fileInfo - > fileName ( ) . startsWith ( " Uniboard Document " ) ) {
QString sankoreDocumentName = fileInfo - > fileName ( ) ;
QString sankoreDocumentName = fileInfo - > fileName ( ) ;
@ -57,10 +67,15 @@ void UniboardSankoreTransition::documentTransition()
}
}
if ( ! result ) {
if ( ! result ) {
qWarning ( ) < < " The transaction has failed during the copy of the " + fileInfo - > filePath ( ) + " document. " ;
qWarning ( ) < < " The transaction has failed " ;
rollbackDocumentsTransition ( fileInfoList ) ;
rollbackDocumentsTransition ( fileInfoList ) ;
UBFileSystemUtils : : deleteDir ( backupDestinationPath ) ;
}
}
else {
else {
UBFileSystemUtils : : deleteDir ( mUniboardSourceDirectory ) ;
UBFileSystemUtils : : deleteDir ( mUniboardSourceDirectory ) ;
}
}
emit transitionFinished ( result ) ;
mTransitionDlg - > hide ( ) ;
}
}