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();