mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-24 13:25:52 +03:00
Add an overall progress counter to progressDispatcher
This commit is contained in:
parent
5fa7e48c24
commit
992dffa032
6 changed files with 50 additions and 18 deletions
|
@ -315,7 +315,8 @@ void CSyncThread::startSync()
|
|||
// cleans up behind us and emits finished() to ease error handling
|
||||
CSyncRunScopeHelper helper(_csync_ctx, this);
|
||||
|
||||
csync_set_progress_callback( _csync_ctx, cb_progress );
|
||||
csync_set_file_progress_callback( _csync_ctx, cb_file_progress );
|
||||
csync_set_overall_progress_callback( _csync_ctx, cb_overall_progress );
|
||||
|
||||
csync_set_module_property(_csync_ctx, "csync_context", _csync_ctx);
|
||||
csync_set_userdata(_csync_ctx, this);
|
||||
|
@ -387,8 +388,8 @@ void CSyncThread::startSync()
|
|||
qDebug() << Q_FUNC_INFO << "Sync finished";
|
||||
}
|
||||
|
||||
void CSyncThread::cb_progress(const char *remote_url, enum csync_notify_type_e kind,
|
||||
long long o1, long long o2, void *userdata)
|
||||
void CSyncThread::cb_file_progress(const char *remote_url, enum csync_notify_type_e kind,
|
||||
long long o1, long long o2, void *userdata)
|
||||
{
|
||||
QString path = QUrl::fromEncoded(remote_url).toString();
|
||||
CSyncThread *thread = static_cast<CSyncThread*>(userdata);
|
||||
|
@ -396,18 +397,30 @@ void CSyncThread::cb_progress(const char *remote_url, enum csync_notify_type_e k
|
|||
if (kind == CSYNC_NOTIFY_FINISHED_DOWNLOAD) {
|
||||
thread->fileReceived(path);
|
||||
} else if( kind == CSYNC_NOTIFY_START_UPLOAD ) {
|
||||
thread->transmissionProgress( Progress::StartUpload, path, (long)0, (long)0 ); // indicate the upload start.
|
||||
thread->fileTransmissionProgress( Progress::StartUpload, path, (long)0, (long)0 ); // indicate the upload start.
|
||||
} else if( kind == CSYNC_NOTIFY_PROGRESS ) {
|
||||
thread->transmissionProgress( Progress::Context, path, o1, o2 );
|
||||
thread->fileTransmissionProgress( Progress::Context, path, o1, o2 );
|
||||
} else if( kind == CSYNC_NOTIFY_FINISHED_UPLOAD ) {
|
||||
thread->transmissionProgress( Progress::EndUpload, path, o2, o2 );
|
||||
thread->fileTransmissionProgress( Progress::EndUpload, path, o2, o2 );
|
||||
} else if( kind == CSYNC_NOTIFY_START_DOWNLOAD ) {
|
||||
thread->transmissionProgress( Progress::StartDownload, path, 0, 0 );
|
||||
thread->fileTransmissionProgress( Progress::StartDownload, path, 0, 0 );
|
||||
} else if( kind == CSYNC_NOTIFY_FINISHED_DOWNLOAD ) {
|
||||
thread->transmissionProgress( Progress::EndDownload, path, o2, o2 );
|
||||
thread->fileTransmissionProgress( Progress::EndDownload, path, o2, o2 );
|
||||
}
|
||||
}
|
||||
|
||||
void CSyncThread::cb_overall_progress(const char *file_name, int file_no, int file_cnt,
|
||||
long long o1, long long o2, void *userdata)
|
||||
{
|
||||
QString file = QUrl::fromEncoded(file_name).toString();
|
||||
CSyncThread *thread = static_cast<CSyncThread*>(userdata);
|
||||
|
||||
if(thread) {
|
||||
thread->overallTransmissionProgress( file, file_no, file_cnt, o1, o2 );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void CSyncThread::setLastAuthCookies(QList<QNetworkCookie> c)
|
||||
{
|
||||
_lastAuthCookies = c;
|
||||
|
|
|
@ -54,8 +54,8 @@ signals:
|
|||
void csyncUnavailable();
|
||||
void treeWalkResult(const SyncFileItemVector&);
|
||||
|
||||
void transmissionProgress( Progress::Kind, const QString&, long, long);
|
||||
|
||||
void fileTransmissionProgress( Progress::Kind, const QString&, long, long);
|
||||
void overallTransmissionProgress( const QString& file, int file_no, int file_cnt, long long o1, long long o2 );
|
||||
void csyncStateDbFile( const QString& );
|
||||
void wipeDb();
|
||||
|
||||
|
@ -66,10 +66,12 @@ signals:
|
|||
|
||||
private:
|
||||
void handleSyncError(CSYNC *ctx, const char *state);
|
||||
static void cb_progress(const char *remote_url,
|
||||
enum csync_notify_type_e kind,
|
||||
long long o1, long long o2,
|
||||
void *userdata);
|
||||
static void cb_file_progress(const char *remote_url,
|
||||
enum csync_notify_type_e kind,
|
||||
long long o1, long long o2,
|
||||
void *userdata);
|
||||
static void cb_overall_progress(const char *file_name, int file_no,
|
||||
int file_cnt, long long o1, long long o2, void *userdata);
|
||||
|
||||
static int treewalkLocal( TREE_WALK_FILE*, void *);
|
||||
static int treewalkRemote( TREE_WALK_FILE*, void *);
|
||||
|
|
|
@ -316,8 +316,11 @@ void ownCloudFolder::startSync(const QStringList &pathList)
|
|||
//blocking connection so the message box happens in this thread, but block the csync thread.
|
||||
connect(_csync, SIGNAL(aboutToRemoveAllFiles(SyncFileItem::Direction,bool*)),
|
||||
SLOT(slotAboutToRemoveAllFiles(SyncFileItem::Direction,bool*)), Qt::BlockingQueuedConnection);
|
||||
connect(_csync, SIGNAL(transmissionProgress(Progress::Kind, QString,long,long)),
|
||||
SLOT(slotTransmissionProgress(Progress::Kind, QString,long,long)));
|
||||
connect(_csync, SIGNAL(fileTransmissionProgress(Progress::Kind, QString,long,long)),
|
||||
SLOT(slotFileTransmissionProgress(Progress::Kind, QString,long,long)));
|
||||
connect(_csync, SIGNAL(overallTransmissionProgress(QString, int, int, long long, long long)),
|
||||
SLOT(slotOverallTransmissionProgress(QString, int, int, long long, long long)));
|
||||
|
||||
|
||||
_thread->start();
|
||||
QMetaObject::invokeMethod(_csync, "startSync", Qt::QueuedConnection);
|
||||
|
@ -422,7 +425,7 @@ void ownCloudFolder::slotLocalPathChanged( const QString& dir )
|
|||
}
|
||||
}
|
||||
|
||||
void ownCloudFolder::slotTransmissionProgress(Progress::Kind kind, const QString& file ,long p1, long p2)
|
||||
void ownCloudFolder::slotFileTransmissionProgress(Progress::Kind kind, const QString& file ,long p1, long p2)
|
||||
{
|
||||
if( kind == Progress::StartDownload ) {
|
||||
_progressKind = Progress::Download;
|
||||
|
@ -439,6 +442,12 @@ void ownCloudFolder::slotTransmissionProgress(Progress::Kind kind, const QString
|
|||
}
|
||||
}
|
||||
|
||||
void ownCloudFolder::slotOverallTransmissionProgress( const QString& fileName, int fileNo, int fileCnt,
|
||||
long long o1, long long o2)
|
||||
{
|
||||
ProgressDispatcher::instance()->setOverallProgress( fileName, fileNo, fileCnt, qlonglong(o1), qlonglong(o2));
|
||||
}
|
||||
|
||||
|
||||
// This removes the csync File database if the sync folder definition is removed
|
||||
// permanentely. This is needed to provide a clean startup again in case another
|
||||
|
|
|
@ -89,7 +89,8 @@ private slots:
|
|||
void slotCsyncUnavailable();
|
||||
void slotCSyncFinished();
|
||||
|
||||
void slotTransmissionProgress(Progress::Kind, const QString&,long, long);
|
||||
void slotFileTransmissionProgress(Progress::Kind, const QString&,long, long);
|
||||
void slotOverallTransmissionProgress( const QString&, int, int, long long, long long);
|
||||
|
||||
private:
|
||||
void setIgnoredFiles();
|
||||
|
|
|
@ -80,4 +80,9 @@ void ProgressDispatcher::setFolderProgress( Progress::Kind kind, const QString&
|
|||
emit folderProgress( kind, alias, file, p1, p2 );
|
||||
}
|
||||
|
||||
void ProgressDispatcher::setOverallProgress( const QString& file, int fileNo, int fileCnt, qlonglong o1, qlonglong o2 )
|
||||
{
|
||||
emit overallProgress( file, fileNo, fileCnt, o1, o2 );
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -49,9 +49,11 @@ public:
|
|||
|
||||
public:
|
||||
void setFolderProgress( Progress::Kind, const QString&, const QString&, long, long );
|
||||
void setOverallProgress( const QString&, int, int, qlonglong, qlonglong);
|
||||
|
||||
signals:
|
||||
void folderProgress( Progress::Kind, const QString&, const QString&, long, long );
|
||||
void overallProgress(const QString&, int, int, qlonglong, qlonglong );
|
||||
|
||||
public slots:
|
||||
|
||||
|
|
Loading…
Reference in a new issue