Quellcode durchsuchen

Add a 'Sync now' button to the sync status header in the tray window

Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
Claudio Cambra vor 3 Jahren
Ursprung
Commit
c0baf5c93c
3 geänderte Dateien mit 35 neuen und 3 gelöschten Zeilen
  1. 29 3
      src/gui/tray/SyncStatus.qml
  2. 5 0
      src/gui/tray/usermodel.cpp
  3. 1 0
      src/gui/tray/usermodel.h

+ 29 - 3
src/gui/tray/SyncStatus.qml

@@ -7,7 +7,7 @@ import Style 1.0
 import com.nextcloud.desktopclient 1.0 as NC
 
 RowLayout {
-    id: layout
+    id: root
 
     property alias model: syncStatus
 
@@ -49,7 +49,7 @@ RowLayout {
 
         Text {
             id: syncProgressText
-            
+
             Layout.fillWidth: true
 
             text: syncStatus.syncStatusString
@@ -64,7 +64,7 @@ RowLayout {
 
             active: syncStatus.syncing
             visible: syncStatus.syncing
-            
+
             sourceComponent: ProgressBar {
                 id: syncProgressBar
 
@@ -98,4 +98,30 @@ RowLayout {
             font.pixelSize: Style.subLinePixelSize
         }
     }
+
+    CustomButton {
+        FontMetrics {
+            id: syncNowFm
+            font.bold: true
+        }
+
+        Layout.preferredWidth: syncNowFm.boundingRect(text).width + leftPadding + rightPadding
+        Layout.rightMargin: Style.trayHorizontalMargin
+
+        FontMetrics { font.bold: true }
+
+        text: qsTr("Sync now")
+        textColor: Style.adjustedCurrentUserHeaderColor
+        textColorHovered: Style.currentUserHeaderTextColor
+        bold: true
+        bgColor: Style.currentUserHeaderColor
+
+        visible: !syncStatus.syncing && NC.UserModel.currentUser.hasLocalFolder
+        enabled: visible
+        onClicked: {
+            if(!syncStatus.syncing) {
+                NC.UserModel.currentUser.forceSyncNow();
+            }
+        }
+    }
 }

+ 5 - 0
src/gui/tray/usermodel.cpp

@@ -856,6 +856,11 @@ void User::slotSendReplyMessage(const int activityIndex, const QString &token, c
     });
 }
 
+void User::forceSyncNow() const
+{
+    FolderMan::instance()->forceSyncForFolder(getFolder());
+}
+
 /*-------------------------------------------------------------------------------------*/
 
 UserModel *UserModel::_instance = nullptr;

+ 1 - 0
src/gui/tray/usermodel.h

@@ -108,6 +108,7 @@ public slots:
     void setNotificationRefreshInterval(std::chrono::milliseconds interval);
     void slotRebuildNavigationAppList();
     void slotSendReplyMessage(const int activityIndex, const QString &conversationToken, const QString &message, const QString &replyTo);
+    void forceSyncNow() const;
 
 private:
     void slotPushNotificationsReady();