plug models into the dialog
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Wed, 3 May 2023 16:40:15 +0000 (18:40 +0200)
committerMatthieu Gallien <matthieu_gallien@yahoo.fr>
Wed, 17 May 2023 06:43:54 +0000 (08:43 +0200)
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
src/gui/ConflictDelegate.qml
src/gui/ResolveConflictsDialog.qml
src/gui/tray/SyncStatus.qml
src/gui/tray/activitylistmodel.cpp
src/gui/tray/activitylistmodel.h

index 7d386404bac52552446a9e4af7fb07d29a245350..66adb571d4eded3fe75903e0e878ee12c4356a98 100644 (file)
@@ -24,7 +24,6 @@ Item {
     id: root
 
     required property string existingFileName
-    required property string conflictFileName
     required property string existingSize
     required property string conflictSize
     required property string existingDate
index 38adcea7138bd40e1fa23169f4dfd001364929c3..4228c75145d5d5a047710064388fb076d3a11d99 100644 (file)
@@ -59,7 +59,7 @@ Window {
         z: 2
 
         EnforcedPlainTextLabel {
-            text: qsTr("%1 files in conflict").arg(12)
+            text: qsTr("%1 files in conflict").arg(delegateModel.count)
             font.bold: true
             font.pixelSize: 20
             Layout.fillWidth: true
@@ -129,6 +129,8 @@ Window {
                 id: conflictListView
 
                 model: DelegateModel {
+                    id: delegateModel
+
                     model: realModel
 
                     delegate: ConflictDelegate {
index b973361c909d1f61400b584f3771833b4b34fa87..799d4d3e09109d1f4cc619ef0ebc88d6ee9b4ec6 100644 (file)
@@ -152,7 +152,7 @@ RowLayout {
                  NC.UserModel.currentUser.isConnected
         enabled: visible
         onClicked: {
-            NC.Systray.createResolveConflictsDialog();
+            NC.Systray.createResolveConflictsDialog(activityModel.allConflicts);
         }
     }
 }
index 3630bccad5814839a84d46ec48696c8e80e038dc..507f4da42f275babcdfbbf80e4ca7cf0eb232c6a 100644 (file)
@@ -428,6 +428,8 @@ void ActivityListModel::startFetchJob()
 void ActivityListModel::setFinalList(const ActivityList &finalList)
 {
     _finalList = finalList;
+
+    emit allConflictsChanged();
 }
 
 const ActivityList &ActivityListModel::finalList() const
@@ -912,4 +914,17 @@ bool ActivityListModel::hasManySyncConflicts() const
     return _hasManySyncConflicts;
 }
 
+ActivityList ActivityListModel::allConflicts() const
+{
+    auto result = ActivityList{};
+
+    for(const auto &activity : _finalList) {
+        if (activity._syncFileItemStatus == SyncFileItem::Conflict) {
+            result.push_back(activity);
+        }
+    }
+
+    return result;
+}
+
 }
index 17e22eaeadbd9d5a28362e0b3e8c9f4cc580c09c..b6864d81c582b1a062619634dbee64b7df8866a9 100644 (file)
@@ -43,6 +43,7 @@ class ActivityListModel : public QAbstractListModel
     Q_PROPERTY(quint32 maxActionButtons READ maxActionButtons CONSTANT)
     Q_PROPERTY(AccountState *accountState READ accountState WRITE setAccountState NOTIFY accountStateChanged)
     Q_PROPERTY(bool hasManySyncConflicts READ hasManySyncConflicts NOTIFY hasManySyncConflictsChanged)
+    Q_PROPERTY(OCC::ActivityList allConflicts READ allConflicts NOTIFY allConflictsChanged)
 
 public:
     enum DataRole {
@@ -108,6 +109,8 @@ public:
 
     [[nodiscard]] bool hasManySyncConflicts() const;
 
+    [[nodiscard]] OCC::ActivityList allConflicts() const;
+
 public slots:
     void slotRefreshActivity();
     void slotRefreshActivityInitial();
@@ -130,6 +133,7 @@ public slots:
 signals:
     void accountStateChanged();
     void hasManySyncConflictsChanged();
+    void allConflictsChanged();
 
     void activityJobStatusCode(int statusCode);
     void sendNotificationRequest(const QString &accountName, const QString &link, const QByteArray &verb, int row);