[Pkg-owncloud-commits] [owncloud-client] 01/09: Imported Upstream version 1.4.2+dfsg
Sandro Knauß
hefee-guest at alioth.debian.org
Tue Oct 22 01:28:28 UTC 2013
This is an automated email from the git hooks/post-receive script.
hefee-guest pushed a commit to branch master
in repository owncloud-client.
commit c828cb785d65be2972b213b842e725767398497f
Author: Sandro Knauß <bugs at sandroknauss.de>
Date: Mon Oct 21 23:06:33 2013 +0200
Imported Upstream version 1.4.2+dfsg
---
.tag | 2 +-
ChangeLog | 16 +++++++
VERSION.cmake | 2 +-
src/mirall/accountsettings.cpp | 37 ++++++++++++----
src/mirall/accountsettings.h | 2 +-
src/mirall/application.cpp | 19 ++++++--
src/mirall/application.h | 1 +
src/mirall/connectionvalidator.cpp | 9 +++-
src/mirall/connectionvalidator.h | 2 +
src/mirall/csyncthread.cpp | 2 +-
src/mirall/folder.cpp | 73 ++++++++++++++++++++++++-------
src/mirall/folder.h | 12 +++++
src/mirall/folderman.cpp | 25 ++++++-----
src/mirall/folderman.h | 5 +--
src/mirall/folderstatusmodel.cpp | 9 ++--
src/mirall/folderwatcher.cpp | 2 +-
src/mirall/folderwatcher_inotify.cpp | 11 ++++-
src/mirall/inotify.cpp | 1 +
src/mirall/itemprogressdialog.cpp | 10 +++--
src/mirall/progressdispatcher.cpp | 6 +++
src/mirall/progressdispatcher.h | 3 ++
src/wizard/owncloudsetupnocredspage.ui | 2 +-
src/wizard/owncloudsetuppage.cpp | 5 ++-
src/wizard/owncloudwizardresultpage.cpp | 3 +-
24 files changed, 198 insertions(+), 61 deletions(-)
diff --git a/.tag b/.tag
index b7d6532..3614764 100644
--- a/.tag
+++ b/.tag
@@ -1 +1 @@
-3e31d86596d39be7d964073f8c4f14899f2921e2
+14a25f9d3f3670cdc4af6faa9c792866493436f5
diff --git a/ChangeLog b/ChangeLog
index ca387e9..fce4acb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,21 @@
ChangeLog
=========
+
+version 1.4.2 (release 2013-10-18 ), csync 0.90.4 required
+
+ * Do not show the warning icon in the tray (#944)
+ * Fix manual proxy support when switching (#1016)
+ * Add folder column to detailed sync protocol (#1037)
+ * Fix possible endless loop in inotify (#1041)
+ * Do not elide the progress text (#1049)
+ * Fix high CPU load (#1073)
+ * Reconnect if network is unavailable after startup (#1080)
+ * Ensure paused folder stays paused when syncing with more than one folder (#1083)
+ * Don't show desktop notification when the user doesn't want to (#1093)
+ * System tray: Avoid quick flickering up of the ok-icon for the sync prepare state
+ * Progress: Do not show progress if nothing is transmitted
+ * Progress: Show number of deletes.
+
version 1.4.1 (release 2013-09-24 ), csync 0.90.1 required
* Translation and documentation fixes.
diff --git a/VERSION.cmake b/VERSION.cmake
index c84d3e5..0956f46 100644
--- a/VERSION.cmake
+++ b/VERSION.cmake
@@ -1,6 +1,6 @@
set( VERSION_MAJOR 1 )
set( VERSION_MINOR 4 )
-set( VERSION_PATCH 1 )
+set( VERSION_PATCH 2 )
set( VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}${VERSION_SUFFIX}")
set( SOVERSION 0 )
diff --git a/src/mirall/accountsettings.cpp b/src/mirall/accountsettings.cpp
index 013775a..b1d6996 100644
--- a/src/mirall/accountsettings.cpp
+++ b/src/mirall/accountsettings.cpp
@@ -35,6 +35,8 @@
#include <QMessageBox>
#include <QAction>
#include <QKeySequence>
+#include <QIcon>
+#include <QVariant>
namespace Mirall {
@@ -50,7 +52,8 @@ static const char progressBarStyleC[] =
AccountSettings::AccountSettings(QWidget *parent) :
QWidget(parent),
- ui(new Ui::AccountSettings)
+ ui(new Ui::AccountSettings),
+ _wasDisabledBefore(false)
{
ui->setupUi(this);
@@ -216,7 +219,7 @@ void AccountSettings::folderToModelItem( QStandardItem *item, Folder *f )
item->setData( f->nativePath(), FolderStatusDelegate::FolderPathRole );
item->setData( f->secondPath(), FolderStatusDelegate::FolderSecondPathRole );
item->setData( f->alias(), FolderStatusDelegate::FolderAliasRole );
- item->setData( f->syncEnabled(), FolderStatusDelegate::FolderSyncEnabled );
+ item->setData( f->userSyncEnabled() && f->syncEnabled(), FolderStatusDelegate::FolderSyncEnabled );
SyncResult res = f->syncResult();
SyncResult::Status status = res.status();
@@ -225,12 +228,21 @@ void AccountSettings::folderToModelItem( QStandardItem *item, Folder *f )
Theme *theme = Theme::instance();
item->setData( theme->statusHeaderText( status ), Qt::ToolTipRole );
- if( f->syncEnabled() ) {
- item->setData( theme->syncStateIcon( status ), FolderStatusDelegate::FolderStatusIconRole );
+ if( f->syncEnabled() && f->userSyncEnabled() ) {
+ if( status == SyncResult::SyncPrepare ) {
+ if( _wasDisabledBefore ) {
+ // if the folder was disabled before, set the sync icon
+ item->setData( theme->syncStateIcon( SyncResult::SyncRunning), FolderStatusDelegate::FolderStatusIconRole );
+ } // we keep the previous icon for the SyncPrepare state.
+ } else {
+ // kepp the previous icon for the prepare phase.
+ item->setData( theme->syncStateIcon( status ), FolderStatusDelegate::FolderStatusIconRole );
+ }
} else {
- item->setData( theme->folderDisabledIcon( ), FolderStatusDelegate::FolderStatusIconRole ); // size 48 before
+ item->setData( theme->folderDisabledIcon( ), FolderStatusDelegate::FolderStatusIconRole ); // size 48 before
+ _wasDisabledBefore = false;
}
- item->setData( theme->statusHeaderText( status ), FolderStatusDelegate::FolderStatus );
+ item->setData( theme->statusHeaderText( status ), FolderStatusDelegate::FolderStatus );
if( errorList.isEmpty() ) {
if( (status == SyncResult::Error ||
@@ -433,7 +445,11 @@ void AccountSettings::slotEnableCurrentFolder()
if ( f->isBusy() && terminate )
folderMan->terminateSyncProcess( alias );
- folderMan->slotEnableFolder( alias, !folderEnabled );
+ folderMan->slotGuiPauseFolder( alias, !folderEnabled );
+
+ // keep state for the icon setting.
+ if( !folderEnabled ) _wasDisabledBefore = true;
+
slotUpdateFolderState (f);
// set the button text accordingly.
slotFolderActivated( selected );
@@ -573,7 +589,7 @@ void AccountSettings::slotProgressProblem(const QString& folder, const Progress:
void AccountSettings::slotSetProgress(const QString& folder, const Progress::Info &progress )
{
- // qDebug() << "================================> Progress for folder " << folder << " file " << file << ": "<< p1;
+ // qDebug() << "================================> Progress for folder " << folder << " progress " << Progress::asResultString(progress.kind);
QStandardItem *item = itemForFolder( folder );
qint64 prog1 = progress.current_file_bytes;
qint64 prog2 = progress.file_size;
@@ -587,6 +603,11 @@ void AccountSettings::slotSetProgress(const QString& folder, const Progress::Inf
qDebug() << "================================> INVALID Progress for folder " << folder;
return;
}
+ if( (progress.kind == Progress::StartSync || progress.kind == Progress::EndSync)
+ && progress.overall_file_count == 0 ) {
+ // do not show progress if nothing is transmitted.
+ return;
+ }
QString itemFileName = shortenFilename(folder, progress.current_file);
QString syncFileProgressString;
diff --git a/src/mirall/accountsettings.h b/src/mirall/accountsettings.h
index a66aa76..d9fc8e9 100644
--- a/src/mirall/accountsettings.h
+++ b/src/mirall/accountsettings.h
@@ -101,7 +101,7 @@ private:
QHash<QStandardItem*, QTimer*> _hideProgressTimers;
QString _kindContext;
QStringList _generalErrors;
-
+ bool _wasDisabledBefore;
};
} // namespace Mirall
diff --git a/src/mirall/application.cpp b/src/mirall/application.cpp
index 8052e44..048663c 100644
--- a/src/mirall/application.cpp
+++ b/src/mirall/application.cpp
@@ -104,6 +104,7 @@ Application::Application(int &argc, char **argv) :
_recentActionsMenu(0),
_theme(Theme::instance()),
_logBrowser(0),
+ _startupNetworkError(false),
_logExpire(0),
_showLogWindow(false),
_logFlush(false),
@@ -155,15 +156,17 @@ Application::Application(int &argc, char **argv) :
}
#endif
+// connect(_networkMgr, SIGNAL(onlineStateChanged(bool)), SLOT(slotCheckConnection()));
+
MirallConfigFile cfg;
_theme->setSystrayUseMonoIcons(cfg.monoIcons());
connect (_theme, SIGNAL(systrayUseMonoIconsChanged(bool)), SLOT(slotUseMonoIconsChanged(bool)));
setupActions();
setupSystemTray();
- slotSetupProxy();
folderMan->setupFolders();
+ slotSetupProxy(); // folders have to be defined first.
// startup procedure.
QTimer::singleShot( 0, this, SLOT( slotCheckConnection() ));
@@ -255,8 +258,6 @@ void Application::slotConnectionValidatorResult(ConnectionValidator::Status stat
FolderMan *folderMan = FolderMan::instance();
qDebug() << "######## Connection and Credentials are ok!";
folderMan->setSyncEnabled(true);
- _tray->setIcon( _theme->syncStateIcon( SyncResult::NotYetStarted, true ) );
- _tray->show();
int cnt = folderMan->map().size();
slotShowOptionalTrayMessage(tr("%1 Sync Started").arg(_theme->appNameGUI()),
@@ -270,6 +271,8 @@ void Application::slotConnectionValidatorResult(ConnectionValidator::Status stat
FolderMan::instance()->setSyncEnabled(false);
_startupFail = _conValidator->errors();
+ _startupNetworkError = _conValidator->networkError();
+ QTimer::singleShot(30*1000, this, SLOT(slotCheckConnection()));
}
computeOverallSyncStatus();
setupContextMenu();
@@ -514,6 +517,7 @@ void Application::slotSetupProxy()
switch(proxyType) {
case QNetworkProxy::NoProxy:
+ QNetworkProxyFactory::setUseSystemConfiguration(false);
QNetworkProxy::setApplicationProxy(QNetworkProxy::NoProxy);
break;
case QNetworkProxy::DefaultProxy:
@@ -521,10 +525,12 @@ void Application::slotSetupProxy()
break;
case QNetworkProxy::Socks5Proxy:
proxy.setType(QNetworkProxy::Socks5Proxy);
+ QNetworkProxyFactory::setUseSystemConfiguration(false);
QNetworkProxy::setApplicationProxy(proxy);
break;
case QNetworkProxy::HttpProxy:
proxy.setType(QNetworkProxy::HttpProxy);
+ QNetworkProxyFactory::setUseSystemConfiguration(false);
QNetworkProxy::setApplicationProxy(proxy);
break;
default:
@@ -832,7 +838,12 @@ void Application::computeOverallSyncStatus()
// if there have been startup problems, show an error message.
if( !_startupFail.isEmpty() ) {
trayMessage = _startupFail.join(QLatin1String("\n"));
- QIcon statusIcon = _theme->syncStateIcon( SyncResult::Error, true );
+ QIcon statusIcon;
+ if (_startupNetworkError) {
+ statusIcon = _theme->syncStateIcon( SyncResult::NotYetStarted, true );
+ } else {
+ statusIcon = _theme->syncStateIcon( SyncResult::Error, true );
+ }
_tray->setIcon( statusIcon );
_tray->setToolTip(trayMessage);
} else {
diff --git a/src/mirall/application.h b/src/mirall/application.h
index f05a433..5d56a3a 100644
--- a/src/mirall/application.h
+++ b/src/mirall/application.h
@@ -140,6 +140,7 @@ private:
QString _logFile;
QString _logDirectory;
QStringList _startupFail;
+ bool _startupNetworkError;
int _logExpire;
bool _showLogWindow;
diff --git a/src/mirall/connectionvalidator.cpp b/src/mirall/connectionvalidator.cpp
index 388432a..5fd0ffa 100644
--- a/src/mirall/connectionvalidator.cpp
+++ b/src/mirall/connectionvalidator.cpp
@@ -28,7 +28,8 @@ ConnectionValidator::ConnectionValidator(QObject *parent) :
ConnectionValidator::ConnectionValidator(const QString& connection, QObject *parent)
: QObject(parent),
- _connection(connection)
+ _connection(connection),
+ _networkError(QNetworkReply::NoError)
{
ownCloudInfo::instance()->setCustomConfigHandle(_connection);
}
@@ -38,6 +39,11 @@ QStringList ConnectionValidator::errors() const
return _errors;
}
+bool ConnectionValidator::networkError() const
+{
+ return _networkError;
+}
+
QString ConnectionValidator::statusString( Status stat ) const
{
QString re;
@@ -130,6 +136,7 @@ void ConnectionValidator::slotNoStatusFound(QNetworkReply *reply)
this, SLOT(slotNoStatusFound(QNetworkReply*)));
_errors.append( reply->errorString() );
+ _networkError = (reply->error() != QNetworkReply::NoError);
emit connectionResult( StatusNotFound );
}
diff --git a/src/mirall/connectionvalidator.h b/src/mirall/connectionvalidator.h
index 93998eb..59f4e4f 100644
--- a/src/mirall/connectionvalidator.h
+++ b/src/mirall/connectionvalidator.h
@@ -42,6 +42,7 @@ public:
};
QStringList errors() const;
+ bool networkError() const;
void checkConnection();
@@ -64,6 +65,7 @@ protected slots:
private:
QStringList _errors;
QString _connection;
+ bool _networkError;
};
}
diff --git a/src/mirall/csyncthread.cpp b/src/mirall/csyncthread.cpp
index 68011ed..de0f1cb 100644
--- a/src/mirall/csyncthread.cpp
+++ b/src/mirall/csyncthread.cpp
@@ -159,7 +159,7 @@ QString CSyncThread::csyncErrorToString( CSYNC_ERROR_CODE err, const char *errSt
}
if( errString ) {
- errStr += tr("<br/>Backend Message: ")+QString::fromUtf8(errString);
+ errStr += tr(" Backend Message: ")+QString::fromUtf8(errString);
}
return errStr;
diff --git a/src/mirall/folder.cpp b/src/mirall/folder.cpp
index eb700e6..4dde615 100644
--- a/src/mirall/folder.cpp
+++ b/src/mirall/folder.cpp
@@ -50,10 +50,13 @@ Folder::Folder(const QString &alias, const QString &path, const QString& secondP
, _secondPath(secondPath)
, _alias(alias)
, _enabled(true)
+ , _userSyncEnabled(true)
, _thread(0)
, _csync(0)
, _csyncError(false)
, _csyncUnavail(false)
+ , _wipeDb(false)
+ , _proxyDirty(true)
, _csync_ctx(0)
{
qsrand(QTime::currentTime().msec());
@@ -198,16 +201,32 @@ void Folder::setSyncEnabled( bool doit )
{
_enabled = doit;
- if( doit ) {
+ if( doit && userSyncEnabled() ) {
// qDebug() << "Syncing enabled on folder " << name();
+ _pollTimer.start();
+ _watcher->clearPendingEvents(); // FIXME 1.5: Why isn't that happening in setEventsEnabled?
+ _watcher->setEventsEnabled(true);
+ _timeSinceLastSync.restart();
} else {
// do not stop or start the watcher here, that is done internally by
// folder class. Even if the watcher fires, the folder does not
// schedule itself because it checks the var. _enabled before.
_pollTimer.stop();
+ _watcher->setEventsEnabled(false);
}
}
+bool Folder::userSyncEnabled()
+{
+ return _userSyncEnabled;
+}
+
+void Folder::slotSetSyncUserEnabled( bool enable )
+{
+ _userSyncEnabled = enable;
+ setSyncEnabled( syncEnabled() ); // no change on the system enable flag.
+}
+
void Folder::setSyncState(SyncResult::Status state)
{
_syncResult.setStatus(state);
@@ -220,11 +239,15 @@ SyncResult Folder::syncResult() const
void Folder::evaluateSync(const QStringList &/*pathList*/)
{
- if( !_enabled ) {
+ if( !syncEnabled() ) {
qDebug() << "*" << alias() << "sync skipped, disabled!";
return;
}
+ if( !userSyncEnabled() ) {
+ qDebug() << "*" << alias() << "sync skipped, user disabled!";
+ return;
+ }
_syncResult.setStatus( SyncResult::NotYetStarted );
_syncResult.clearErrors();
emit scheduleToSync( alias() );
@@ -235,8 +258,9 @@ void Folder::slotPollTimerTimeout()
{
qDebug() << "* Polling" << alias() << "for changes. (time since next sync:" << (_timeSinceLastSync.elapsed() / 1000) << "s)";
+ // Force sync if the last sync is a long time ago or if there was a serious problem.
if (quint64(_timeSinceLastSync.elapsed()) > MirallConfigFile().forceSyncInterval() ||
- _syncResult.status() != SyncResult::Success ) {
+ !(_syncResult.status() == SyncResult::Success || _syncResult.status() == SyncResult::Problem)) {
qDebug() << "** Force Sync now";
evaluateSync(QStringList());
} else {
@@ -289,7 +313,7 @@ void Folder::bubbleUpSyncResult()
foreach (const SyncFileItem &item, _syncResult.syncFileItemVector() ) {
if( item._instruction == CSYNC_INSTRUCTION_ERROR ) {
slotCSyncError( tr("File %1: %2").arg(item._file).arg(item._errorString) );
- logger->postGuiLog(tr("File %1").arg(item._file), item._errorString);
+ logger->postOptionalGuiLog(tr("File %1").arg(item._file), item._errorString);
} else {
if (item._dir == SyncFileItem::Down) {
@@ -340,25 +364,25 @@ void Folder::bubbleUpSyncResult()
if (newItems > 0) {
QString file = QDir::toNativeSeparators(firstItemNew._file);
if (newItems == 1)
- logger->postGuiLog(tr("New file available"), tr("'%1' has been synced to this machine.").arg(file));
+ logger->postOptionalGuiLog(tr("New file available"), tr("'%1' has been synced to this machine.").arg(file));
else
- logger->postGuiLog(tr("New files available"), tr("'%1' and %n other file(s) have been synced to this machine.",
+ logger->postOptionalGuiLog(tr("New files available"), tr("'%1' and %n other file(s) have been synced to this machine.",
"", newItems-1).arg(file));
}
if (removedItems > 0) {
QString file = QDir::toNativeSeparators(firstItemDeleted._file);
if (removedItems == 1)
- logger->postGuiLog(tr("File removed"), tr("'%1' has been removed.").arg(file));
+ logger->postOptionalGuiLog(tr("File removed"), tr("'%1' has been removed.").arg(file));
else
- logger->postGuiLog(tr("Files removed"), tr("'%1' and %n other file(s) have been removed.",
+ logger->postOptionalGuiLog(tr("Files removed"), tr("'%1' and %n other file(s) have been removed.",
"", removedItems-1).arg(file));
}
if (updatedItems > 0) {
QString file = QDir::toNativeSeparators(firstItemUpdated._file);
if (updatedItems == 1)
- logger->postGuiLog(tr("File updated"), tr("'%1' has been updated.").arg(file));
+ logger->postOptionalGuiLog(tr("File updated"), tr("'%1' has been updated.").arg(file));
else
- logger->postGuiLog(tr("Files updated"), tr("'%1' and %n other file(s) have been updated.",
+ logger->postOptionalGuiLog(tr("Files updated"), tr("'%1' and %n other file(s) have been updated.",
"", updatedItems-1).arg(file));
}
}
@@ -400,7 +424,7 @@ void Folder::slotThreadTreeWalkResult(const SyncFileItemVector& items)
void Folder::slotCatchWatcherError(const QString& error)
{
- Logger::instance()->postGuiLog(tr("Error"), error);
+ Logger::instance()->postOptionalGuiLog(tr("Error"), error);
}
void Folder::slotTerminateSync()
@@ -433,6 +457,7 @@ void Folder::slotTerminateSync()
_csyncError = true;
qDebug() << "-> CSync Terminated!";
slotCSyncFinished();
+ setSyncEnabled(false);
}
// This removes the csync File database if the sync folder definition is removed
@@ -500,10 +525,21 @@ void Folder::setProxy()
csync_set_module_property(_csync_ctx, "proxy_user", proxy.user().toUtf8().data() );
csync_set_module_property(_csync_ctx, "proxy_pwd" , proxy.password().toUtf8().data() );
- FolderMan::instance()->setDirtyProxy(false);
+ setProxyDirty(false);
+ } else {
+ qDebug() << "WRN: Unable to set Proxy without csync-ctx!";
}
}
+void Folder::setProxyDirty(bool value)
+{
+ _proxyDirty = value;
+}
+
+bool Folder::proxyDirty()
+{
+ return _proxyDirty;
+}
const char* Folder::proxyTypeToCStr(QNetworkProxy::ProxyType type)
{
@@ -539,7 +575,7 @@ void Folder::startSync(const QStringList &pathList)
QMetaObject::invokeMethod(this, "slotCSyncFinished", Qt::QueuedConnection);
return;
}
- } else if (FolderMan::instance()->isDirtyProxy()) {
+ } else if (proxyDirty()) {
setProxy();
}
@@ -613,10 +649,13 @@ void Folder::slotCsyncUnavailable()
void Folder::slotCSyncFinished()
{
- qDebug() << "-> CSync Finished slot with error " << _csyncError;
- _watcher->setEventsEnabledDelayed(2000);
- _pollTimer.start();
- _timeSinceLastSync.restart();
+ qDebug() << "-> CSync Finished slot for" << alias() << "with error" << _csyncError;
+ if( syncEnabled() && userSyncEnabled() ) {
+ qDebug() << "Sync is enabled - starting the polltimer again.";
+ _watcher->setEventsEnabledDelayed(2000);
+ _pollTimer.start();
+ _timeSinceLastSync.restart();
+ }
bubbleUpSyncResult();
diff --git a/src/mirall/folder.h b/src/mirall/folder.h
index d2bc200..b80e165 100644
--- a/src/mirall/folder.h
+++ b/src/mirall/folder.h
@@ -150,6 +150,16 @@ public slots:
*/
void startSync(const QStringList &pathList = QStringList());
+ void setProxyDirty(bool value);
+ bool proxyDirty();
+
+ /**
+ * @brief slotSetSyncUserEnabled - slot that sets the enable/disable flag from the GUI
+ * @param enable
+ */
+ void slotSetSyncUserEnabled( bool enable );
+ bool userSyncEnabled();
+
private slots:
void slotCSyncStarted();
void slotCSyncError(const QString& );
@@ -194,6 +204,7 @@ protected:
QString _configFile;
QFileSystemWatcher *_pathWatcher;
bool _enabled;
+ bool _userSyncEnabled; // enabled by user interaction?
FolderWatcher *_watcher;
SyncResult _syncResult;
QThread *_thread;
@@ -202,6 +213,7 @@ protected:
bool _csyncError;
bool _csyncUnavail;
bool _wipeDb;
+ bool _proxyDirty;
Progress::Kind _progressKind;
QTimer _pollTimer;
QString _lastEtag;
diff --git a/src/mirall/folderman.cpp b/src/mirall/folderman.cpp
index 67c53c9..f1b5f51 100644
--- a/src/mirall/folderman.cpp
+++ b/src/mirall/folderman.cpp
@@ -37,8 +37,7 @@ FolderMan* FolderMan::_instance = 0;
FolderMan::FolderMan(QObject *parent) :
QObject(parent),
- _syncEnabled( true ),
- _dirtyProxy( true )
+ _syncEnabled( true )
{
// if QDir::mkpath would not be so stupid, I would not need to have this
// duplication of folderConfigPath() here
@@ -270,7 +269,7 @@ Folder* FolderMan::setupFolderFromConfigFile(const QString &file) {
return folder;
}
-void FolderMan::slotEnableFolder( const QString& alias, bool enable )
+void FolderMan::slotGuiPauseFolder( const QString& alias, bool enable )
{
if( ! _folderMap.contains( alias ) ) {
qDebug() << "!! Can not enable alias " << alias << ", can not be found in folderMap.";
@@ -279,7 +278,7 @@ void FolderMan::slotEnableFolder( const QString& alias, bool enable )
Folder *f = _folderMap[alias];
if( f ) {
- f->setSyncEnabled(enable);
+ f->slotSetSyncUserEnabled(enable);
f->evaluateSync(QStringList());
}
}
@@ -391,8 +390,8 @@ void FolderMan::slotScheduleFolderSync()
if( _folderMap.contains( alias ) ) {
ownCloudInfo::instance()->getQuotaRequest("/");
Folder *f = _folderMap[alias];
- _currentSyncFolder = alias;
- if (f->syncEnabled()) {
+ if( f->syncEnabled() ) {
+ _currentSyncFolder = alias;
f->startSync( QStringList() );
}
}
@@ -521,6 +520,14 @@ bool FolderMan::startFromScratch( const QString& localFolder )
return false;
}
+void FolderMan::setDirtyProxy(bool value)
+{
+ foreach( Folder *f, _folderMap.values() ) {
+ f->setProxyDirty(value);
+ }
+}
+
+
SyncResult FolderMan::accountStatus(const QList<Folder*> &folders)
{
SyncResult overallResult(SyncResult::Undefined);
@@ -546,6 +553,7 @@ SyncResult FolderMan::accountStatus(const QList<Folder*> &folders)
case SyncResult::Unavailable:
overallResult.setStatus( SyncResult::Unavailable );
break;
+ case SyncResult::Problem:
case SyncResult::Success:
if( overallResult.status() == SyncResult::Undefined )
overallResult.setStatus( SyncResult::Success );
@@ -557,10 +565,7 @@ SyncResult FolderMan::accountStatus(const QList<Folder*> &folders)
if ( overallResult.status() != SyncResult::Error )
overallResult.setStatus( SyncResult::SetupError );
break;
- case SyncResult::Problem:
- if ( overallResult.status() != SyncResult::Problem )
- overallResult.setStatus( SyncResult::Problem );
- break;
+
// no default case on purpose, check compiler warnings
}
}
diff --git a/src/mirall/folderman.h b/src/mirall/folderman.h
index 8051d0c..a6e649e 100644
--- a/src/mirall/folderman.h
+++ b/src/mirall/folderman.h
@@ -91,7 +91,7 @@ signals:
public slots:
void slotRemoveFolder( const QString& );
- void slotEnableFolder( const QString&, bool );
+ void slotGuiPauseFolder( const QString&, bool );
void slotFolderSyncStarted();
void slotFolderSyncFinished( const SyncResult& );
@@ -109,8 +109,7 @@ public slots:
void slotScheduleAllFolders();
- bool isDirtyProxy() { return _dirtyProxy; }
- void setDirtyProxy(bool value = true) { _dirtyProxy = value; }
+ void setDirtyProxy(bool value = true);
private slots:
// slot to add a folder to the syncing queue
diff --git a/src/mirall/folderstatusmodel.cpp b/src/mirall/folderstatusmodel.cpp
index 15a0a1f..bc9074a 100644
--- a/src/mirall/folderstatusmodel.cpp
+++ b/src/mirall/folderstatusmodel.cpp
@@ -251,8 +251,8 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
painter->save();
// Sizes-Text
- QRect octetRect = subFm.boundingRect( overallString );
- int progressTextWidth = octetRect.width();
+ QRect octetRect = progressFm.boundingRect( overallString );
+ int progressTextWidth = octetRect.width() + 2;
// Overall Progress Bar.
QRect pBRect;
@@ -281,8 +281,7 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
overallProgressRect.setWidth( progressTextWidth );
painter->setFont(progressFont);
- QString elidedText = progressFm.elidedText(overallString, Qt::ElideLeft, overallProgressRect.width());
- painter->drawText( overallProgressRect, Qt::AlignRight+Qt::AlignVCenter, elidedText);
+ painter->drawText( overallProgressRect, Qt::AlignRight+Qt::AlignVCenter, overallString);
// painter->drawRect(overallProgressRect);
// Individual File Progress
@@ -291,7 +290,7 @@ void FolderStatusDelegate::paint(QPainter *painter, const QStyleOptionViewItem &
fileRect.setLeft( iconRect.left());
fileRect.setWidth(overallWidth);
fileRect.setHeight(fileNameTextHeight);
- elidedText = progressFm.elidedText(itemString, Qt::ElideLeft, fileRect.width());
+ QString elidedText = progressFm.elidedText(itemString, Qt::ElideLeft, fileRect.width());
painter->drawText( fileRect, Qt::AlignLeft+Qt::AlignVCenter, elidedText);
diff --git a/src/mirall/folderwatcher.cpp b/src/mirall/folderwatcher.cpp
index 60c9ba9..5f61e83 100644
--- a/src/mirall/folderwatcher.cpp
+++ b/src/mirall/folderwatcher.cpp
@@ -79,7 +79,7 @@ void FolderWatcher::addIgnoreListFile( const QString& file )
while (!infile.atEnd()) {
QString line = QString::fromLocal8Bit( infile.readLine() ).trimmed();
- if( !line.startsWith( QLatin1Char('#') ) && line.isEmpty() ) {
+ if( !(line.startsWith( QLatin1Char('#') ) || line.isEmpty()) ) {
_ignores.append(line);
}
}
diff --git a/src/mirall/folderwatcher_inotify.cpp b/src/mirall/folderwatcher_inotify.cpp
index f650b0f..a58fe33 100644
--- a/src/mirall/folderwatcher_inotify.cpp
+++ b/src/mirall/folderwatcher_inotify.cpp
@@ -132,7 +132,16 @@ void FolderWatcherPrivate::slotINotifyEvent(int mask, int /*cookie*/, const QStr
//qDebug() << cookie << " OTHER " << mask << " :" << path;
}
- foreach (const QString& pattern, _parent->ignores()) {
+ QStringList ignores = _parent->ignores();
+
+ if( path.endsWith(".csync_journal.db.ctmp") ||
+ path.endsWith(".csync_journal.db.ctmp-journal") ||
+ path.endsWith(".csync_journal.db")) {
+ qDebug() << " ** Inotify ignored for " <<path;
+ return;
+ }
+
+ foreach (const QString& pattern, ignores) {
QRegExp regexp(pattern);
regexp.setPatternSyntax(QRegExp::Wildcard);
diff --git a/src/mirall/inotify.cpp b/src/mirall/inotify.cpp
index 60bda41..7032fea 100644
--- a/src/mirall/inotify.cpp
+++ b/src/mirall/inotify.cpp
@@ -88,6 +88,7 @@ void INotify::slotActivated(int /*fd*/)
// with the help of watch descriptor, retrieve, corresponding INotify
if (event == NULL) {
qDebug() << "NULL event";
+ i += sizeof(struct inotify_event);
continue;
}
diff --git a/src/mirall/itemprogressdialog.cpp b/src/mirall/itemprogressdialog.cpp
index b9fd292..c8e0e43 100644
--- a/src/mirall/itemprogressdialog.cpp
+++ b/src/mirall/itemprogressdialog.cpp
@@ -39,6 +39,7 @@ ItemProgressDialog::ItemProgressDialog(Application*, QWidget *parent) :
connect(ProgressDispatcher::instance(), SIGNAL(progressSyncProblem(const QString&,const Progress::SyncProblem&)),
this, SLOT(slotProgressErrors(const QString&, const Progress::SyncProblem&)));
+ // Adjust copyToClipboard() when making changes here!
QStringList header;
header << tr("Time");
header << tr("File");
@@ -210,13 +211,16 @@ void ItemProgressDialog::copyToClipboard()
int topLevelItems = _ui->_treeWidget->topLevelItemCount();
for (int i = 0; i < topLevelItems; i++) {
QTreeWidgetItem *child = _ui->_treeWidget->topLevelItem(i);
- // time stamp
- ts << left << qSetFieldWidth(10)
+ ts << left
+ // time stamp
+ << qSetFieldWidth(10)
<< child->data(0,Qt::DisplayRole).toString()
// file name
<< qSetFieldWidth(64)
<< child->data(1,Qt::DisplayRole).toString()
- << qSetFieldWidth(0) << ' '
+ // folder
+ << qSetFieldWidth(15)
+ << child->data(2, Qt::DisplayRole).toString()
// action
<< qSetFieldWidth(15)
<< child->data(3, Qt::DisplayRole).toString()
diff --git a/src/mirall/progressdispatcher.cpp b/src/mirall/progressdispatcher.cpp
index d1d6619..57ab332 100644
--- a/src/mirall/progressdispatcher.cpp
+++ b/src/mirall/progressdispatcher.cpp
@@ -171,11 +171,17 @@ void ProgressDispatcher::setProgressInfo(const QString& folder, const Progress::
} else {
if( newProgress.kind == Progress::StartSync ) {
_recentProblems.clear();
+ _timer.start();
}
if( newProgress.kind == Progress::EndSync ) {
newProgress.overall_current_bytes = newProgress.overall_transmission_size;
newProgress.current_file_no = newProgress.overall_file_count;
_currentAction.remove(newProgress.folder);
+ qint64 msecs = _timer.elapsed();
+
+ qDebug()<< "[PROGRESS] progressed " << newProgress.overall_transmission_size
+ << " bytes in " << newProgress.overall_file_count << " files"
+ << " in msec " << msecs;
}
if( newProgress.kind == Progress::EndDownload ||
newProgress.kind == Progress::EndUpload ||
diff --git a/src/mirall/progressdispatcher.h b/src/mirall/progressdispatcher.h
index 96a2f1f..4f62fac 100644
--- a/src/mirall/progressdispatcher.h
+++ b/src/mirall/progressdispatcher.h
@@ -18,6 +18,7 @@
#include <QHash>
#include <QTime>
#include <QQueue>
+#include <QElapsedTimer>
namespace Mirall {
@@ -116,6 +117,8 @@ private:
QList<Progress::SyncProblem> _recentProblems;
QHash<QString, Progress::Kind> _currentAction;
+
+ QElapsedTimer _timer;
static ProgressDispatcher* _instance;
};
diff --git a/src/wizard/owncloudsetupnocredspage.ui b/src/wizard/owncloudsetupnocredspage.ui
index 793fb63..067af53 100644
--- a/src/wizard/owncloudsetupnocredspage.ui
+++ b/src/wizard/owncloudsetupnocredspage.ui
@@ -76,7 +76,7 @@
</sizepolicy>
</property>
<property name="toolTip">
- <string>Enter the url of the ownCloud you want to connect to (without http or https).</string>
+ <string>Enter the URL of the server that you want to connect to (without http or https).</string>
</property>
<property name="placeholderText">
<string>https://...</string>
diff --git a/src/wizard/owncloudsetuppage.cpp b/src/wizard/owncloudsetuppage.cpp
index 3dea12f..37ac90d 100644
--- a/src/wizard/owncloudsetuppage.cpp
+++ b/src/wizard/owncloudsetuppage.cpp
@@ -41,7 +41,7 @@ OwncloudSetupPage::OwncloudSetupPage()
Theme *theme = Theme::instance();
setTitle(WizardCommon::titleTemplate().arg(tr("Connect to %1").arg(theme->appNameGUI())));
- setSubTitle(WizardCommon::subTitleTemplate().arg(tr("Setup ownCloud server")));
+ setSubTitle(WizardCommon::subTitleTemplate().arg(tr("Setup %1 server").arg(theme->appNameGUI())));
registerField( QLatin1String("OCUrl*"), _ui.leUrl );
@@ -227,7 +227,8 @@ void OwncloudSetupPage::setConfigExists( bool config )
_configExists = config;
if (config == true) {
- setSubTitle(WizardCommon::subTitleTemplate().arg(tr("Update ownCloud server")));
+ setSubTitle(WizardCommon::subTitleTemplate().arg(tr("Update %1 server")
+ .arg(Theme::instance()->appNameGUI())));
}
}
diff --git a/src/wizard/owncloudwizardresultpage.cpp b/src/wizard/owncloudwizardresultpage.cpp
index 62f6faf..62acdb1 100644
--- a/src/wizard/owncloudwizardresultpage.cpp
+++ b/src/wizard/owncloudwizardresultpage.cpp
@@ -78,7 +78,8 @@ void OwncloudWizardResultPage::initializePage()
text = tr("Your entire account is synced to the local folder <i>%1</i>")
.arg(QDir::toNativeSeparators(localFolder));
} else {
- text = tr("ownCloud folder <i>%1</i> is synced to local folder <i>%2</i>")
+ text = tr("%1 folder <i>%1</i> is synced to local folder <i>%2</i>")
+ .arg(Theme::instance()->appNameGUI())
.arg(_remoteFolder).arg(QDir::toNativeSeparators(localFolder));
}
_ui.localFolderLabel->setText( text );
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git
More information about the Pkg-owncloud-commits
mailing list