Because that's what's going on. A job can 'complete an item' or 'finish'.
Note that several jobs could complete the same item: a new directory
will complete on the PropagateRemoteMkdir and the PropagateDirectory
jobs.
Previously, PropagateDirectory jobs didn't emit the completed() signal.
Now that they do, we need to make sure to not add extra lines to the
protocol widget for them.
To accomplish that, the jobCompleted() signal now also contains the job
that completed the item.
This made no sens. Folders are setup when the account is setup.
Also this had the bad side effect to shut the sync engine too early,
leaving the SyncEngine::_syncRunning to true, and leading to ASSERT later
Issue #3427
application.cpp still had a global folder syncing on/off switch
when an account connected or disconnected. That couldn't work with
multiaccount.
Instead FolderMan listens to accountStateChanged messages and
schedules or de-schedules the folders for accounts that change state.
Do not pass AccountState in constructor of Folder, set with a
new method called setAccountState after creation. Thus the
parameter does not need to be passed through all over.
When the local sync target is just a drive letter (e.g. "X:\"), neither
the display of the sync status via file icon overlay, nor the creation of a
share link works. In the latter case no pop-up comes up and no server
request is done.
QDir::cleanPath() usually removes trailing slashes, but not if the path to
be cleaned is just "X:\". In that case the trailing slash is kept. This
commit accounts for that exception.
I had a situation here where we were showing stale desktop notifications when a remote folder
errored out and then sync finished with _syncResult data from previous sync.
Use a QSharedPointer to keep the same ownership and
continue passing the SyncFileItems as a const& when
ownership isn't taken. This allows sharing the same
allocations between the jobs and the result vectors.
This saves about 20MB of memory (off 120MB) once all
jobs are created.
QFileInfo has to be refreshed if the underlying file has been
modified in between. That is dangerous so ckamm and me decided
to eliminate the QFileInfo based implementations.
This was triggered by a bug that the client uploaded files that
it should not have.