diff options
author | Camila Ayres <smayres@gmail.com> | 2018-08-24 15:54:42 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-24 15:54:42 +0300 |
commit | 647df7bcee5b0f6000fc63590753095e85c0ce6d (patch) | |
tree | 830692b93983d158b9de0c18a147cf4370849942 | |
parent | ea0bdddb2a850cdf0de5c0c87d279f456992b0b4 (diff) | |
parent | 64e21d5083fe1c8a89a64afc438543fda7c1c73f (diff) |
Merge pull request #580 from nextcloud/issues/activitiesv2.5.0-beta2
Fixes #538: correctly checks for local sync actitivities.
-rw-r--r-- | client.qrc | 1 | ||||
-rw-r--r-- | resources/state-sync.svg | 1 | ||||
-rw-r--r-- | src/gui/activitylistmodel.cpp | 15 | ||||
-rw-r--r-- | src/gui/activitylistmodel.h | 2 | ||||
-rw-r--r-- | src/gui/activitywidget.cpp | 103 |
5 files changed, 70 insertions, 52 deletions
diff --git a/client.qrc b/client.qrc index 3cc86157e..471f4c23d 100644 --- a/client.qrc +++ b/client.qrc @@ -36,6 +36,7 @@ <file>resources/public.svg</file> <file>resources/confirm.svg</file> <file>resources/copy.svg</file> + <file>resources/state-sync.svg</file> </qresource> <qresource prefix="/"/> </RCC> diff --git a/resources/state-sync.svg b/resources/state-sync.svg new file mode 100644 index 000000000..658d1b40e --- /dev/null +++ b/resources/state-sync.svg @@ -0,0 +1 @@ +<svg width="16" height="16" version="1.1" viewBox="0 0 4.2333 4.2333" xmlns="http://www.w3.org/2000/svg"><g transform="matrix(.87498 0 0 .87498 .26458 -255.9)"><circle cx="2.1167" cy="294.88" r="2.1167" fill="#2268ab" stroke-width=".25066"/><g fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="m3.0714 295.43a1.1024 1.1024 0 0 1-0.95473 0.55121 1.1024 1.1024 0 0 1-0.95473-0.55121" stroke="#fff" stroke-width=".44097"/><path transform="scale(-1)" d="m-1.1619-294.33a1.1024 1.1024 0 0 1-0.95473 0.55122 1.1024 1.1024 0 0 1-0.95473-0.55122" stroke="#fff" stroke-width=".44097"/><path d="m1.4349 295.15-0.52538-4e-5 1.138e-4 0.52563" stroke="#faffff" stroke-width=".52916"/><path d="m2.815 294.62 0.52538 4e-5 -1.138e-4 -0.52563" stroke="#faffff" stroke-width=".52916"/></g></g></svg> diff --git a/src/gui/activitylistmodel.cpp b/src/gui/activitylistmodel.cpp index 78e2b9b55..7647d364f 100644 --- a/src/gui/activitylistmodel.cpp +++ b/src/gui/activitylistmodel.cpp @@ -108,9 +108,9 @@ QVariant ActivityListModel::data(const QModelIndex &index, int role) const || a._status == SyncFileItem::Restoration){ return QIcon(QLatin1String(":/client/resources/state-warning.svg")); } - return QIcon(QLatin1String(":/client/resources/activity.png")); - } else return QIcon(QLatin1String(":/client/resources/activity.png")); - return QVariant(); + return QIcon(QLatin1String(":/client/resources/state-sync.svg")); + } + return QIcon(QLatin1String(":/client/resources/activity.png")); break; case ActivityItemDelegate::ObjectTypeRole: return a._objectType; @@ -237,6 +237,12 @@ void ActivityListModel::removeActivityFromActivityList(int row) { removeActivityFromActivityList(activity); } +void ActivityListModel::addSyncFileItemToActivityList(Activity activity) { + qCInfo(lcActivity) << "Successfully added to the activity list: " << activity._subject; + _syncFileItemLists.prepend(activity); + combineActivityLists(); +} + void ActivityListModel::removeActivityFromActivityList(Activity activity) { qCInfo(lcActivity) << "Activity/Notification/Error successfully dismissed: " << activity._subject; qCInfo(lcActivity) << "Trying to remove Activity/Notification/Error from view... "; @@ -271,6 +277,9 @@ void ActivityListModel::combineActivityLists() std::sort(_notificationLists.begin(), _notificationLists.end()); resultList.append(_notificationLists); + std::sort(_syncFileItemLists.begin(), _syncFileItemLists.end()); + resultList.append(_syncFileItemLists); + std::sort(_activityLists.begin(), _activityLists.end()); resultList.append(_activityLists); diff --git a/src/gui/activitylistmodel.h b/src/gui/activitylistmodel.h index c44b7b7b8..9f278285d 100644 --- a/src/gui/activitylistmodel.h +++ b/src/gui/activitylistmodel.h @@ -50,6 +50,7 @@ public: ActivityList errorsList() { return _notificationErrorsLists; } void addNotificationToActivityList(Activity activity); void addErrorToActivityList(Activity activity); + void addSyncFileItemToActivityList(Activity activity); void removeActivityFromActivityList(int row); void removeActivityFromActivityList(Activity activity); @@ -68,6 +69,7 @@ private: void combineActivityLists(); ActivityList _activityLists; + ActivityList _syncFileItemLists; ActivityList _notificationLists; ActivityList _notificationErrorsLists; ActivityList _finalList; diff --git a/src/gui/activitywidget.cpp b/src/gui/activitywidget.cpp index cd50dd7dd..0b3293030 100644 --- a/src/gui/activitywidget.cpp +++ b/src/gui/activitywidget.cpp @@ -98,52 +98,49 @@ ActivityWidget::~ActivityWidget() void ActivityWidget::slotProgressInfo(const QString &folder, const ProgressInfo &progress) { + if (progress.status() == ProgressInfo::Reconcile) { + // Wipe all non-persistent entries - as well as the persistent ones + // in cases where a local discovery was done. + auto f = FolderMan::instance()->folder(folder); + if (!f) + return; + const auto &engine = f->syncEngine(); + const auto style = engine.lastLocalDiscoveryStyle(); + foreach (Activity activity, _model->errorsList()) { + if (activity._folder != folder){ + continue; + } + + if (style == LocalDiscoveryStyle::FilesystemOnly){ + _model->removeActivityFromActivityList(activity); + continue; + } + + if(activity._status == SyncFileItem::Conflict && !QFileInfo(f->path() + activity._file).exists()){ + _model->removeActivityFromActivityList(activity); + continue; + } + -// TODO: this is really not working -// if (progress.status() == ProgressInfo::Done -// || progress.status() == ProgressInfo::Reconcile) { -// // Wipe all non-persistent entries - as well as the persistent ones -// // in cases where a local discovery was done. -// auto f = FolderMan::instance()->folder(folder); -// if (!f) -// return; -// const auto &engine = f->syncEngine(); -// const auto style = engine.lastLocalDiscoveryStyle(); -// foreach (Activity activity, _model->errorsList()) { -// if (activity._folder != folder){ -// continue; -// } - -// if (style == LocalDiscoveryStyle::FilesystemOnly){ -// _model->removeActivityFromActivityList(activity); -// continue; -// } - -// if(activity._status == SyncFileItem::Conflict && !QFileInfo(f->path() + activity._file).exists()){ -// _model->removeActivityFromActivityList(activity); -// continue; -// } - - -// if(activity._status == SyncFileItem::FileIgnored && !QFileInfo(f->path() + activity._file).exists()){ -// _model->removeActivityFromActivityList(activity); -// continue; -// } - -// if(!QFileInfo(f->path() + activity._file).exists()){ -// _model->removeActivityFromActivityList(activity); -// continue; -// } - -// auto path = QFileInfo(activity._file).dir().path().toUtf8(); -// if (path == ".") -// path.clear(); - -// if(engine.shouldDiscoverLocally(path)) -// _model->removeActivityFromActivityList(activity); -// } - -// } + if(activity._status == SyncFileItem::FileIgnored && !QFileInfo(f->path() + activity._file).exists()){ + _model->removeActivityFromActivityList(activity); + continue; + } + + if(!QFileInfo(f->path() + activity._file).exists()){ + _model->removeActivityFromActivityList(activity); + continue; + } + + auto path = QFileInfo(activity._file).dir().path().toUtf8(); + if (path == ".") + path.clear(); + + if(engine.shouldDiscoverLocally(path)) + _model->removeActivityFromActivityList(activity); + } + + } if (progress.status() == ProgressInfo::Done) { // We keep track very well of pending conflicts. @@ -171,18 +168,26 @@ void ActivityWidget::slotItemCompleted(const QString &folder, const SyncFileItem qCWarning(lcActivity) << "Item " << item->_file << " retrieved resulted in " << item->_errorString; Activity activity; - activity._type = Activity::SyncFileItemType; + activity._type = Activity::SyncFileItemType; //client activity activity._status = item->_status; activity._dateTime = QDateTime::fromString(QDateTime::currentDateTime().toString(), Qt::ISODate); - activity._subject = item->_errorString; activity._message = item->_originalFile; activity._link = folderInstance->accountState()->account()->url(); activity._accName = folderInstance->accountState()->account()->displayName(); activity._file = item->_file; activity._folder = folder; - // add 'protocol error' to activity list - _model->addErrorToActivityList(activity); + if(item->_status == SyncFileItem::NoStatus || item->_status == SyncFileItem::Success){ + qCWarning(lcActivity) << "Item " << item->_file << " retrieved successfully."; + activity._message.prepend(tr("Synced ")); + _model->addSyncFileItemToActivityList(activity); + } else { + qCWarning(lcActivity) << "Item " << item->_file << " retrieved resulted in error " << item->_errorString; + activity._subject = item->_errorString; + + // add 'protocol error' to activity list + _model->addErrorToActivityList(activity); + } } } |