From 6f36f8798f701c2c0127ffea923b6101b31779e8 Mon Sep 17 00:00:00 2001 From: Mathieu Pellerin Date: Wed, 28 Feb 2024 12:07:28 +0700 Subject: [PATCH] Allow users to force auto-push and manage time interval via project configuration --- .../gui/project_configuration_widget.py | 18 ++++++++ qfieldsync/ui/project_configuration_widget.ui | 45 +++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/qfieldsync/gui/project_configuration_widget.py b/qfieldsync/gui/project_configuration_widget.py index c59ce2aa..3c0cf336 100644 --- a/qfieldsync/gui/project_configuration_widget.py +++ b/qfieldsync/gui/project_configuration_widget.py @@ -104,6 +104,8 @@ def __init__(self, parent=None): ) self.singleLayerRadioButton.toggled.connect(self.baseMapTypeChanged) + self.forceAutoPush.clicked.connect(self.onForceAutoPushClicked) + self.attachmentDirsListWidget.itemChanged.connect(self.onItemChanged) self.event_eater = EventEater() self.attachmentDirsListWidget.installEventFilter(self.event_eater) @@ -191,6 +193,14 @@ def reloadProject(self): self.__project_configuration.layer_action_preference == "offline" ) + self.forceAutoPush.setChecked(self.__project_configuration.force_auto_push) + self.forceAutoPushInterval.setEnabled( + self.__project_configuration.force_auto_push + ) + self.forceAutoPushInterval.setValue( + self.__project_configuration.force_auto_push_interval_mins + ) + attachment_dirs = [*self.preferences.value("attachmentDirs")] attachment_dirs.append("") @@ -279,6 +289,11 @@ def apply(self): "online" if self.preferOnlineLayersRadioButton.isChecked() else "offline" ) + self.__project_configuration.force_auto_push = self.forceAutoPush.isChecked() + self.__project_configuration.force_auto_push_interval_mins = ( + self.forceAutoPushInterval.value() + ) + v = QLibraryInfo.version() match_flag = ( Qt.MatchRegularExpression @@ -290,6 +305,9 @@ def apply(self): keys[item.text()] = 1 self.preferences.set_value("attachmentDirs", list(keys.keys())) + def onForceAutoPushClicked(self, checked): + self.forceAutoPushInterval.setEnabled(checked) + def onLayerActionPreferenceChanged(self): """Triggered when prefer online or offline radio buttons have been changed""" prefer_online = self.preferOnlineLayersRadioButton.isChecked() diff --git a/qfieldsync/ui/project_configuration_widget.ui b/qfieldsync/ui/project_configuration_widget.ui index bdd9706c..b3fe52a3 100644 --- a/qfieldsync/ui/project_configuration_widget.ui +++ b/qfieldsync/ui/project_configuration_widget.ui @@ -104,6 +104,51 @@ + + + + + + 0 + 0 + + + + Automatically push pending changes on the following interval + + + + + + + + 1 + 0 + + + + minutes + + + 1 + + + 2880 + + + 30 + + + true + + + 30 + + + + + + Qt::Vertical