From 63083a558bb695a97c7f56f011dc6cb50eb8ade2 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Wed, 19 Feb 2014 10:51:04 +0100 Subject: [PATCH 1/3] OwncloudCmd: Print update phase duration values --- src/CMakeLists.txt | 1 + src/mirall/csyncthread.cpp | 20 ++++++++++--------- src/mirall/progressdispatcher.cpp | 10 ++++++++++ src/mirall/progressdispatcher.h | 6 +++++- src/owncloudcmd/owncloudcmd.cpp | 32 ++++++++++++++++++++++++++++++- 5 files changed, 58 insertions(+), 11 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 81b3ccf37b..82f1418ea7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -439,6 +439,7 @@ endif() set(owncloudcmd_NAME ${APPLICATION_EXECUTABLE}cmd) set(OWNCLOUDCMD_SRC owncloudcmd/owncloudcmd.cpp) +qt_wrap_cpp(OWNCLOUDCMD_MOCS owncloudcmd/owncloudcmd.cpp) add_executable(${owncloudcmd_NAME} ${OWNCLOUDCMD_SRC}) qt5_use_modules(${owncloudcmd_NAME} Network Sql) set_target_properties(${owncloudcmd_NAME} PROPERTIES diff --git a/src/mirall/csyncthread.cpp b/src/mirall/csyncthread.cpp index c20d601ceb..0589c9ce12 100644 --- a/src/mirall/csyncthread.cpp +++ b/src/mirall/csyncthread.cpp @@ -411,19 +411,21 @@ void CSyncThread::handleSyncError(CSYNC *ctx, const char *state) { static void updater_progress_callback(CSYNC_PROGRESS *progress, void *userdata) { - static QElapsedTimer localTimer; - static QElapsedTimer remoteTimer; + Progress::Info pInfo; if (progress->kind == CSYNC_NOTIFY_START_LOCAL_UPDATE) { - localTimer.start(); + pInfo.kind = Progress::StartLocalUpdate; } else if (progress->kind == CSYNC_NOTIFY_FINISHED_LOCAL_UPDATE) { - // There is also localTimer.nsecsElapsed() - qDebug() << "Local Update took" << localTimer.elapsed() << "msec"; + pInfo.kind = Progress::EndLocalUpdate; } else if (progress->kind == CSYNC_NOTIFY_START_REMOTE_UPDATE) { - remoteTimer.start(); + pInfo.kind = Progress::StartRemoteUpdate; } else if (progress->kind == CSYNC_NOTIFY_FINISHED_REMOTE_UPDATE) { - qDebug() << "Remote Update took" << remoteTimer.elapsed() << "msec"; + pInfo.kind = Progress::EndRemoteUpdate; + } else { + return; // FIXME, but most progress stuff should come from the new propagator } - + pInfo.timestamp = QDateTime::currentDateTime(); + CSyncThread *self = static_cast(userdata); + emit self->transmissionProgress( pInfo ); } void CSyncThread::startSync() @@ -506,7 +508,7 @@ void CSyncThread::startSync() // csync_set_auth_callback( _csync_ctx, getauth ); csync_set_log_callback( csyncLogCatcher ); - csync_set_log_level( 11 ); + //csync_set_log_level( 11 ); don't set the loglevel here, it shall be done by folder.cpp or owncloudcmd.cpp _syncTime.start(); diff --git a/src/mirall/progressdispatcher.cpp b/src/mirall/progressdispatcher.cpp index 4b5a6d9605..a0e52b3bfa 100644 --- a/src/mirall/progressdispatcher.cpp +++ b/src/mirall/progressdispatcher.cpp @@ -64,6 +64,11 @@ QString Progress::asResultString( const Progress::Info& progress) case EndRename: re = QCoreApplication::translate( "progress", "Moved to %1").arg(progress.rename_target); break; + case StartLocalUpdate: + case EndLocalUpdate: + case StartRemoteUpdate: + case EndRemoteUpdate: + break; // FIXME default: Q_ASSERT(false); } @@ -118,6 +123,11 @@ QString Progress::asActionString( Kind kind ) case EndRename: re = QCoreApplication::translate( "progress", "moved"); break; + case StartLocalUpdate: + case EndLocalUpdate: + case StartRemoteUpdate: + case EndRemoteUpdate: + break; // FIXME default: Q_ASSERT(false); } diff --git a/src/mirall/progressdispatcher.h b/src/mirall/progressdispatcher.h index 2b6a597827..6a38b6de8c 100644 --- a/src/mirall/progressdispatcher.h +++ b/src/mirall/progressdispatcher.h @@ -46,7 +46,11 @@ namespace Progress EndRename, SoftError, NormalError, - FatalError + FatalError, + StartLocalUpdate, + EndLocalUpdate, + StartRemoteUpdate, + EndRemoteUpdate }; struct Info { diff --git a/src/owncloudcmd/owncloudcmd.cpp b/src/owncloudcmd/owncloudcmd.cpp index d8e53a6da6..e4d710340c 100644 --- a/src/owncloudcmd/owncloudcmd.cpp +++ b/src/owncloudcmd/owncloudcmd.cpp @@ -30,6 +30,29 @@ using namespace Mirall; +class OwncloudCmd : public QObject { + Q_OBJECT +public: + OwncloudCmd() : QObject() { } +public slots: + void transmissionProgressSlot(Progress::Info pI) { + static QElapsedTimer localTimer; + static QElapsedTimer remoteTimer; + if (pI.kind == Progress::StartLocalUpdate) { + localTimer.start(); + } else if (pI.kind == Progress::EndLocalUpdate) { + // There is also localTimer.nsecsElapsed() + qDebug() << "Local Update took" << localTimer.elapsed() << "msec"; + } else if (pI.kind == Progress::StartRemoteUpdate) { + remoteTimer.start(); + } else if (pI.kind == Progress::EndRemoteUpdate) { + qDebug() << "Remote Update took" << remoteTimer.elapsed() << "msec"; + } + } +}; +#include "owncloudcmd/moc_owncloudcmd.cpp" + + int getauth(const char* prompt, char* buf, size_t len, int echo, int verify, void*) { std::cout << "** Authentication required: \n" << prompt << std::endl; @@ -44,6 +67,7 @@ struct CmdOptions { QString target_url; QString config_directory; QString proxy; + bool silent; }; void help() @@ -56,6 +80,7 @@ void help() std::cout << "uses the setting from a configured sync client." << std::endl; std::cout << std::endl; std::cout << "Options:" << std::endl; + std::cout << " --silent Don't be so verbose" << std::endl; std::cout << " --confdir = configdir: Read config from there." << std::endl; std::cout << " --httpproxy = proxy: Specify a http proxy to use." << std::endl; std::cout << " Proxy is http://server:port" << std::endl; @@ -97,6 +122,8 @@ void parseOptions( const QStringList& app_args, CmdOptions *options ) options->config_directory = it.next(); } else if( option == "--httpproxy" && !it.peekNext().startsWith("-")) { options->proxy = it.next(); + } else if( option == "--silent") { + options->silent = true; } else { help(); } @@ -126,7 +153,7 @@ int main(int argc, char **argv) { qFatal("ne_sock_init failed!"); } - csync_set_log_level(11); + csync_set_log_level(options.silent ? 1 : 11); csync_enable_conflictcopys(_csync_ctx); Logger::instance()->setLogFile("-"); @@ -174,9 +201,12 @@ int main(int argc, char **argv) { clientProxy.setCSyncProxy(QUrl(url), _csync_ctx); } + OwncloudCmd owncloudCmd; + SyncJournalDb db(options.source_dir); CSyncThread csyncthread(_csync_ctx, options.source_dir, QUrl(options.target_url).path(), &db); QObject::connect(&csyncthread, SIGNAL(finished()), &app, SLOT(quit())); + QObject::connect(&csyncthread, SIGNAL(transmissionProgress(Progress::Info)), &owncloudCmd, SLOT(transmissionProgressSlot(Progress::Info))); csyncthread.startSync(); app.exec(); From 9237293cc0d84c7b1449289bac807cf179eb281d Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Wed, 19 Feb 2014 10:57:29 +0100 Subject: [PATCH 2/3] OwncloudCmd: Fixup URL Allow users to specify owncloud(s) or http(s) --- src/owncloudcmd/owncloudcmd.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/owncloudcmd/owncloudcmd.cpp b/src/owncloudcmd/owncloudcmd.cpp index e4d710340c..8e8ff2ee90 100644 --- a/src/owncloudcmd/owncloudcmd.cpp +++ b/src/owncloudcmd/owncloudcmd.cpp @@ -105,6 +105,8 @@ void parseOptions( const QStringList& app_args, CmdOptions *options ) } options->target_url.append("remote.php/webdav/"); } + if (options->target_url.startsWith("http")) + options->target_url.replace(0, 4, "owncloud"); options->source_dir = args.takeLast(); if( !QFile::exists( options->source_dir )) { std::cerr << "Source dir does not exists."; From b7c7c9f3ebe3c35bb17ccbfd8916e746f3428949 Mon Sep 17 00:00:00 2001 From: Markus Goetz Date: Wed, 19 Feb 2014 10:59:57 +0100 Subject: [PATCH 3/3] Accountsettings: Fix warning --- src/mirall/accountsettings.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/mirall/accountsettings.cpp b/src/mirall/accountsettings.cpp index f320751c35..301b755f3e 100644 --- a/src/mirall/accountsettings.cpp +++ b/src/mirall/accountsettings.cpp @@ -635,6 +635,12 @@ void AccountSettings::slotSetProgress(const QString& folder, const Progress::Inf case Progress::NormalError: case Progress::FatalError: break; + case Progress::StartLocalUpdate: + case Progress::EndLocalUpdate: + case Progress::StartRemoteUpdate: + case Progress::EndRemoteUpdate: + // FIXME could be interesting to show this to the user + break; } QString fileProgressString;