From b3eecf54a59f57b99c8be6fee3b86eca2b113f15 Mon Sep 17 00:00:00 2001 From: Klaas Freitag Date: Mon, 26 Sep 2011 18:19:01 +0200 Subject: [PATCH] improved error handling --- src/mirall/application.cpp | 3 ++- src/mirall/folderwizard.cpp | 15 +++++++----- src/mirall/folderwizardtargetpage.ui | 2 +- src/mirall/sitecopyconfig.cpp | 36 +++++++++++++++------------- src/mirall/sitecopyconfig.h | 3 ++- src/mirall/sitecopyfolder.cpp | 15 ++++++++++-- src/mirall/syncresult.cpp | 10 ++++++++ src/mirall/syncresult.h | 3 +++ 8 files changed, 60 insertions(+), 27 deletions(-) diff --git a/src/mirall/application.cpp b/src/mirall/application.cpp index 460f43793b..49121ac4b0 100644 --- a/src/mirall/application.cpp +++ b/src/mirall/application.cpp @@ -174,7 +174,8 @@ void Application::slotAddFolder() alias, /* _folderWizard->field("OCSiteAlias").toString(), site alias */ _folderWizard->field("OCUrl").toString(), /* site URL */ _folderWizard->field("OCUser").toString(), - _folderWizard->field("OCPasswd").toString() ); + _folderWizard->field("OCPasswd").toString(), + _folderWizard->field("targetOCFolder").toString() ); } else { qWarning() << "* Folder not local and note remote?"; return; diff --git a/src/mirall/folderwizard.cpp b/src/mirall/folderwizard.cpp index 576c6acb86..4d103958bb 100644 --- a/src/mirall/folderwizard.cpp +++ b/src/mirall/folderwizard.cpp @@ -19,7 +19,7 @@ #include #include #include - +#include #include #include "mirall/folderwizard.h" @@ -31,7 +31,9 @@ FolderWizardSourcePage::FolderWizardSourcePage() { _ui.setupUi(this); registerField("sourceFolder*", _ui.localFolderLineEdit); + _ui.localFolderLineEdit->setText( QString( "%1/%2").arg( QDir::homePath() ).arg("/Owncloud" ) ); registerField("alias*", _ui.aliasLineEdit); + _ui.aliasLineEdit->setText( QString::fromLatin1("Owncloud") ); } FolderWizardSourcePage::~FolderWizardSourcePage() @@ -62,16 +64,17 @@ FolderWizardTargetPage::FolderWizardTargetPage() { _ui.setupUi(this); - registerField("local?", _ui.localFolderRadioBtn); - registerField("remote?", _ui.urlFolderRadioBtn); - registerField("OC?", _ui.OCRadioBtn); + registerField("local?", _ui.localFolderRadioBtn); + registerField("remote?", _ui.urlFolderRadioBtn); + registerField("OC?", _ui.OCRadioBtn); registerField("targetLocalFolder", _ui.localFolder2LineEdit); - registerField("targetURLFolder", _ui.urlFolderLineEdit); - registerField("targetOCFolder", _ui.OCFolderLineEdit); + registerField("targetURLFolder", _ui.urlFolderLineEdit); + registerField("targetOCFolder", _ui.OCFolderLineEdit); } FolderWizardTargetPage::~FolderWizardTargetPage() { + } bool FolderWizardTargetPage::isComplete() const diff --git a/src/mirall/folderwizardtargetpage.ui b/src/mirall/folderwizardtargetpage.ui index a24a04ef45..fb808a5b49 100644 --- a/src/mirall/folderwizardtargetpage.ui +++ b/src/mirall/folderwizardtargetpage.ui @@ -170,7 +170,7 @@ - Sync + Sync-directory diff --git a/src/mirall/sitecopyconfig.cpp b/src/mirall/sitecopyconfig.cpp index 26955acbe2..736147b78f 100644 --- a/src/mirall/sitecopyconfig.cpp +++ b/src/mirall/sitecopyconfig.cpp @@ -23,7 +23,8 @@ SitecopyConfig::SitecopyConfig() void SitecopyConfig::writeSiteConfig( const QString& localPath, const QString& siteAlias, const QString& url, - const QString& user, const QString& passwd ) + const QString& user, const QString& passwd, + const QString& remoteFolder ) { parseSiteConfig( ); qDebug() << "*** Writing Site Alias " << siteAlias; @@ -47,10 +48,13 @@ void SitecopyConfig::writeSiteConfig( const QString& localPath, ocDefs["server"] = host; ocDefs["protocol"] = "webdav"; ocDefs["local"] = localPath; - ocDefs["remote"] = path + "/files/webdav.php"; + QString webdavBase = "/files/webdav.php"; + if( !remoteFolder.isEmpty() ) { + webdavBase += "/" + remoteFolder; + } + ocDefs["remote"] = path + webdavBase; ocDefs["password"] = passwd; - // QString user( getenv("USER")); ocDefs["username"] = user; _Sites.insert( siteAlias, ocDefs ); @@ -70,20 +74,20 @@ void SitecopyConfig::writeSiteConfig( const QString& localPath, out << " " << configKey << " " << configs[configKey] << '\n'; qDebug() << " Setting: " << configKey << ": " << configs[configKey]; } - out << '\n'; - } - configFile.close(); - configFile.setPermissions( QFile::ReadOwner | QFile::WriteOwner ); + out << '\n'; + } + configFile.close(); + configFile.setPermissions( QFile::ReadOwner | QFile::WriteOwner ); - // check if the .sitecopy dir is there, if not, create - if( !QFile::exists( QDir::homePath() + "/.sitecopy" ) ) { - QDir home( QDir::homePath() ); - if( home.mkdir( ".sitecopy" ) ) { - QFile::setPermissions( QDir::homePath() + "/.sitecopy", - QFile::ReadOwner | QFile::WriteOwner | QFile::ExeUser ); - } - } - } + // check if the .sitecopy dir is there, if not, create + if( !QFile::exists( QDir::homePath() + "/.sitecopy" ) ) { + QDir home( QDir::homePath() ); + if( home.mkdir( ".sitecopy" ) ) { + QFile::setPermissions( QDir::homePath() + "/.sitecopy", + QFile::ReadOwner | QFile::WriteOwner | QFile::ExeUser ); + } + } +} bool SitecopyConfig::parseSiteConfig( ) { diff --git a/src/mirall/sitecopyconfig.h b/src/mirall/sitecopyconfig.h index 12f43847ba..a37e71480c 100644 --- a/src/mirall/sitecopyconfig.h +++ b/src/mirall/sitecopyconfig.h @@ -24,7 +24,8 @@ public: void writeSiteConfig( const QString& localPath, const QString& siteAlias, const QString& host, const QString& user, - const QString& passwd ); + const QString& passwd, + const QString& remoteFolder = QString() ); bool parseSiteConfig(); private: diff --git a/src/mirall/sitecopyfolder.cpp b/src/mirall/sitecopyfolder.cpp index d2a333438d..aca4fd4e83 100644 --- a/src/mirall/sitecopyfolder.cpp +++ b/src/mirall/sitecopyfolder.cpp @@ -115,6 +115,17 @@ void SiteCopyFolder::slotFinished(int exitCode, QProcess::ExitStatus exitStatus) emit( syncFinished( SyncResult( SyncResult::Error ))); } + if( exitCode > 0 ) { + // error has happened. + QString out( _lastOutput ); + SyncResult res( SyncResult::Error ); + res.setErrorString( out ); + qDebug() << "An error happened: " << out; + emit syncFinished( res ); + return; + } + + if( _NextStep == Sync ) { startSiteCopy( "--sync", Finish ); // sync local with cloud data. } else if( _NextStep == Update ) { @@ -212,7 +223,7 @@ void SiteCopyFolder::slotReadyReadStandardOutput() } emit statusString( _StatusString ); - } else if( _NextStep == DisplayStatus ) { + } else { /* if( _NextStep == DisplayStatus ) { */ _lastOutput += arr; } @@ -223,7 +234,7 @@ void SiteCopyFolder::slotReadyReadStandardOutput() void SiteCopyFolder::slotReadyReadStandardError() { QTextStream stream(&_lastOutput); - stream << _SiteCopy->readAllStandardError();; + stream << _SiteCopy->readAllStandardError(); } void SiteCopyFolder::slotStateChanged(QProcess::ProcessState state) diff --git a/src/mirall/syncresult.cpp b/src/mirall/syncresult.cpp index dede132f15..c44d27585f 100644 --- a/src/mirall/syncresult.cpp +++ b/src/mirall/syncresult.cpp @@ -28,6 +28,16 @@ SyncResult::Result SyncResult::result() const return _result; } +void SyncResult::setErrorString( const QString& err ) +{ + _errorMsg = err; +} + +QString SyncResult::errorString() const +{ + return _errorMsg; +} + SyncResult::~SyncResult() { diff --git a/src/mirall/syncresult.h b/src/mirall/syncresult.h index e886cc70e5..65f9a75edd 100644 --- a/src/mirall/syncresult.h +++ b/src/mirall/syncresult.h @@ -31,6 +31,8 @@ public: SyncResult(Result result); ~SyncResult(); + void setErrorString( const QString& ); + QString errorString() const; Result result() const; @@ -41,6 +43,7 @@ private: */ QStringList _deletedSource; QStringList _deletedDestination; + QString _errorMsg; }; }