Integrated local error messages in activitymodel
authorDominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com>
Mon, 13 Jan 2020 11:54:38 +0000 (12:54 +0100)
committerDominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com>
Mon, 13 Jan 2020 11:54:38 +0000 (12:54 +0100)
Signed-off-by: Dominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com>
src/gui/tray/UserModel.cpp
src/gui/tray/UserModel.h

index 9dd6295222ed9d56adf600dd089d8d7d231fdcb5..caaa2b8f2fd4798aec7d7f0bc8d3615039473db2 100644 (file)
@@ -19,6 +19,42 @@ User::User(AccountStatePtr &account, const bool &isCurrent, QObject* parent)
 {
     connect(ProgressDispatcher::instance(), &ProgressDispatcher::itemCompleted,
         this, &User::slotItemCompleted);
+    connect(ProgressDispatcher::instance(), &ProgressDispatcher::syncError,
+        this, &User::slotAddError);
+}
+
+void User::slotAddError(const QString &folderAlias, const QString &message, ErrorCategory category)
+{
+    auto folderInstance = FolderMan::instance()->folder(folderAlias);
+    if (!folderInstance)
+        return;
+
+    if (folderInstance->accountState() == _account.data()) {
+        qCWarning(lcActivity) << "Item " << folderInstance->shortGuiLocalPath() << " retrieved resulted in " << message;
+
+        Activity activity;
+        activity._type = Activity::SyncResultType;
+        activity._status = SyncResult::Error;
+        activity._dateTime = QDateTime::fromString(QDateTime::currentDateTime().toString(), Qt::ISODate);
+        activity._subject = message;
+        activity._message = folderInstance->shortGuiLocalPath();
+        activity._link = folderInstance->shortGuiLocalPath();
+        activity._accName = folderInstance->accountState()->account()->displayName();
+        activity._folder = folderAlias;
+
+
+        if (category == ErrorCategory::InsufficientRemoteStorage) {
+            ActivityLink link;
+            link._label = tr("Retry all uploads");
+            link._link = folderInstance->path();
+            link._verb = "";
+            link._isPrimary = true;
+            activity._links.append(link);
+        }
+
+        // add 'other errors' to activity list
+        _activityModel->addErrorToActivityList(activity);
+    }
 }
 
 void User::slotItemCompleted(const QString &folder, const SyncFileItemPtr &item)
index f8ec80b52ddd802b03d0b25d5e8b23a91f6449a3..4bec4db085b77129e62b2bfc54489864ac2fe631 100644 (file)
@@ -38,6 +38,7 @@ public:
 
 public slots:
     void slotItemCompleted(const QString &folder, const SyncFileItemPtr &item);
+    void slotAddError(const QString &folderAlias, const QString &message, ErrorCategory category);
 
 private:
     AccountStatePtr _account;