diff --git a/src/mirall/application.cpp b/src/mirall/application.cpp index 82926fd126..6b9374c161 100644 --- a/src/mirall/application.cpp +++ b/src/mirall/application.cpp @@ -935,6 +935,10 @@ void Application::computeOverallSyncStatus() folderMessage = tr( "Sync is running." ); overallResult.setStatus( SyncResult::SyncRunning ); break; + case SyncResult::Unavailable: + folderMessage = tr( "Server is currently not available." ); + overallResult.setStatus( SyncResult::Unavailable ); + break; case SyncResult::Success: if( overallResult.status() == SyncResult::Undefined ) { folderMessage = tr( "Last Sync was successful." ); diff --git a/src/mirall/csyncthread.cpp b/src/mirall/csyncthread.cpp index 9499c33268..7750fb102e 100644 --- a/src/mirall/csyncthread.cpp +++ b/src/mirall/csyncthread.cpp @@ -345,7 +345,10 @@ void CSyncThread::startSync() const char *errMsg = csync_get_error_string( csync ); QString errStr = csyncErrorToString(err, errMsg); qDebug() << " #### ERROR csync_update: " << errStr; - emit csyncError(errStr); + if (err == CSYNC_ERR_SERVICE_UNAVAILABLE) + emit csyncUnavailable(); + else + emit csyncError(errStr); goto cleanup; } qDebug() << "<<#### Update end ###########################################################"; @@ -375,7 +378,10 @@ void CSyncThread::startSync() const char *errMsg = csync_get_error_string( csync ); QString errStr = csyncErrorToString(err, errMsg); qDebug() << " #### ERROR csync_propagate: " << errStr; - emit csyncError(errStr); + if (err == CSYNC_ERR_SERVICE_UNAVAILABLE) + emit csyncUnavailable(); + else + emit csyncError(errStr); goto cleanup; } diff --git a/src/mirall/csyncthread.h b/src/mirall/csyncthread.h index 9392f0ef85..daa04c794f 100644 --- a/src/mirall/csyncthread.h +++ b/src/mirall/csyncthread.h @@ -51,6 +51,7 @@ signals: void fileRemoved( const QString& ); void csyncError( const QString& ); void csyncWarning( const QString& ); + void csyncUnavailable(); void treeWalkResult(const SyncFileItemVector&); void csyncStateDbFile( const QString& ); diff --git a/src/mirall/fileitemdialog.cpp b/src/mirall/fileitemdialog.cpp index 1ce7a5e54c..ddb9a42e24 100644 --- a/src/mirall/fileitemdialog.cpp +++ b/src/mirall/fileitemdialog.cpp @@ -63,6 +63,9 @@ void FileItemDialog::setSyncResult( const SyncResult& result ) case SyncResult::NotYetStarted: folderMessage = tr( "The folder waits to start syncing." ); break; + case SyncResult::Unavailable: + folderMessage = tr( "Server is currently not available." ); + break; case SyncResult::SyncRunning: folderMessage = tr("Sync is running."); break; diff --git a/src/mirall/owncloudfolder.cpp b/src/mirall/owncloudfolder.cpp index 1744c65c18..8b324ca1d0 100644 --- a/src/mirall/owncloudfolder.cpp +++ b/src/mirall/owncloudfolder.cpp @@ -58,6 +58,7 @@ ownCloudFolder::ownCloudFolder(const QString &alias, , _thread(0) , _csync(0) , _csyncError(false) + , _csyncUnavail(false) , _wipeDb(false) { _notifier = new DownloadNotifier(QDir::fromNativeSeparators(path), @@ -114,6 +115,7 @@ void ownCloudFolder::startSync(const QStringList &pathList) delete _thread; _errors.clear(); _csyncError = false; + _csyncUnavail = false; _wipeDb = false; MirallConfigFile cfgFile; @@ -145,6 +147,7 @@ void ownCloudFolder::startSync(const QStringList &pathList) connect(_csync, SIGNAL(started()), SLOT(slotCSyncStarted()), Qt::QueuedConnection); connect(_csync, SIGNAL(finished()), SLOT(slotCSyncFinished()), Qt::QueuedConnection); connect(_csync, SIGNAL(csyncError(QString)), SLOT(slotCSyncError(QString)), Qt::QueuedConnection); + connect(_csync, SIGNAL(csyncUnavailable()), SLOT(slotCsyncUnavailable()), Qt::QueuedConnection); connect(_csync, SIGNAL(fileReceived(QString)), _notifier, SLOT(slotFileReceived(QString)), Qt::QueuedConnection); @@ -165,6 +168,11 @@ void ownCloudFolder::slotCSyncError(const QString& err) _csyncError = true; } +void ownCloudFolder::slotCsyncUnavailable() +{ + _csyncUnavail = true; +} + void ownCloudFolder::slotCSyncFinished() { qDebug() << "-> CSync Finished slot with error " << _csyncError; @@ -176,6 +184,8 @@ void ownCloudFolder::slotCSyncFinished() _syncResult.setErrorStrings( _errors ); qDebug() << " * owncloud csync thread finished with error"; if( _wipeDb ) wipe(); + } else if (_csyncUnavail) { + _syncResult.setStatus(SyncResult::Unavailable); } else { _syncResult.setStatus(SyncResult::Success); } diff --git a/src/mirall/owncloudfolder.h b/src/mirall/owncloudfolder.h index 30827da5ef..dc21b04d8b 100644 --- a/src/mirall/owncloudfolder.h +++ b/src/mirall/owncloudfolder.h @@ -90,6 +90,7 @@ protected slots: private slots: void slotCSyncStarted(); void slotCSyncError(const QString& ); + void slotCsyncUnavailable(); void slotCSyncFinished(); private: @@ -99,6 +100,7 @@ private: CSyncThread *_csync; QStringList _errors; bool _csyncError; + bool _csyncUnavail; bool _wipeDb; SyncFileItemVector _items; }; diff --git a/src/mirall/owncloudtheme.cpp b/src/mirall/owncloudtheme.cpp index 0c7140d162..c0d4219b3b 100644 --- a/src/mirall/owncloudtheme.cpp +++ b/src/mirall/owncloudtheme.cpp @@ -81,9 +81,8 @@ QIcon ownCloudTheme::syncStateIcon( SyncResult::Status status, bool sysTray ) co switch( status ) { case SyncResult::Undefined: - statusIcon = QLatin1String("state-offline"); - break; case SyncResult::NotYetStarted: + case SyncResult::Unavailable: statusIcon = QLatin1String("state-offline"); break; case SyncResult::SyncRunning: @@ -93,11 +92,7 @@ QIcon ownCloudTheme::syncStateIcon( SyncResult::Status status, bool sysTray ) co statusIcon = QLatin1String("state-ok"); break; case SyncResult::Error: - statusIcon = QLatin1String("state-error"); - break; case SyncResult::SetupError: - statusIcon = QLatin1String("state-error"); - break; default: statusIcon = QLatin1String("state-error"); } diff --git a/src/mirall/syncresult.h b/src/mirall/syncresult.h index 9bb6075761..9d3e0fc1e0 100644 --- a/src/mirall/syncresult.h +++ b/src/mirall/syncresult.h @@ -34,7 +34,8 @@ public: SyncRunning, Success, Error, - SetupError + SetupError, + Unavailable }; SyncResult();