Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/desktop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamila Ayres <smayres@gmail.com>2018-08-24 15:54:42 +0300
committerGitHub <noreply@github.com>2018-08-24 15:54:42 +0300
commit647df7bcee5b0f6000fc63590753095e85c0ce6d (patch)
tree830692b93983d158b9de0c18a147cf4370849942
parentea0bdddb2a850cdf0de5c0c87d279f456992b0b4 (diff)
parent64e21d5083fe1c8a89a64afc438543fda7c1c73f (diff)
Merge pull request #580 from nextcloud/issues/activitiesv2.5.0-beta2
Fixes #538: correctly checks for local sync actitivities.
-rw-r--r--client.qrc1
-rw-r--r--resources/state-sync.svg1
-rw-r--r--src/gui/activitylistmodel.cpp15
-rw-r--r--src/gui/activitylistmodel.h2
-rw-r--r--src/gui/activitywidget.cpp103
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);
+ }
}
}