mirror of
https://github.com/nextcloud/desktop.git
synced 2025-10-26 11:17:43 +00:00
Added an option to customize the server poll interval in the Advanced Settings
Signed-off-by: Pablo Ariño Muñoz <progpabarino@gmail.com>
This commit is contained in:
parent
2751dde1b7
commit
a087da79f0
@ -50,6 +50,7 @@
|
||||
#include <QMessageBox>
|
||||
|
||||
#include <KZip>
|
||||
#include <chrono>
|
||||
|
||||
namespace {
|
||||
struct ZipEntry {
|
||||
@ -187,6 +188,8 @@ GeneralSettings::GeneralSettings(QWidget *parent)
|
||||
{
|
||||
_ui->setupUi(this);
|
||||
|
||||
_ui->labelInterval->setOpenExternalLinks(true);
|
||||
|
||||
connect(_ui->serverNotificationsCheckBox, &QAbstractButton::toggled,
|
||||
this, &GeneralSettings::slotToggleOptionalServerNotifications);
|
||||
_ui->serverNotificationsCheckBox->setToolTip(tr("Server notifications that require attention."));
|
||||
@ -240,7 +243,8 @@ GeneralSettings::GeneralSettings(QWidget *parent)
|
||||
connect(_ui->stopExistingFolderNowBigSyncCheckBox, &QAbstractButton::toggled, this, &GeneralSettings::saveMiscSettings);
|
||||
connect(_ui->newExternalStorage, &QAbstractButton::toggled, this, &GeneralSettings::saveMiscSettings);
|
||||
connect(_ui->moveFilesToTrashCheckBox, &QAbstractButton::toggled, this, &GeneralSettings::saveMiscSettings);
|
||||
|
||||
connect(_ui->remotePollIntervalSpinBox, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &GeneralSettings::slotRemotePollIntervalChanged);
|
||||
connect(_ui->remotePollIntervalCheckBox, &QAbstractButton::toggled, this, &GeneralSettings::slotRemotePollIntervalCheckBoxToggled);
|
||||
#ifndef WITH_CRASHREPORTER
|
||||
_ui->crashreporterCheckBox->setVisible(false);
|
||||
#endif
|
||||
@ -321,6 +325,13 @@ void GeneralSettings::loadMiscSettings()
|
||||
_ui->stopExistingFolderNowBigSyncCheckBox->setChecked(_ui->existingFolderLimitCheckBox->isChecked() && cfgFile.stopSyncingExistingFoldersOverLimit());
|
||||
_ui->newExternalStorage->setChecked(cfgFile.confirmExternalStorage());
|
||||
_ui->monoIconsCheckBox->setChecked(cfgFile.monoIcons());
|
||||
|
||||
|
||||
bool hasCustomInterval = cfgFile.hasRemotePollInterval();
|
||||
_ui->remotePollIntervalCheckBox->setChecked(hasCustomInterval);
|
||||
auto interval = cfgFile.remotePollInterval();
|
||||
_ui->remotePollIntervalSpinBox->setValue(static_cast<int>(interval.count() / 1000));
|
||||
_ui->remotePollIntervalSpinBox->setEnabled(hasCustomInterval);
|
||||
}
|
||||
|
||||
#if defined(BUILD_UPDATER)
|
||||
@ -639,4 +650,31 @@ void GeneralSettings::customizeStyle()
|
||||
#endif
|
||||
}
|
||||
|
||||
void GeneralSettings::slotRemotePollIntervalCheckBoxToggled(bool checked) {
|
||||
_ui->remotePollIntervalSpinBox->setEnabled(checked); // Enable/disable the spin box
|
||||
|
||||
ConfigFile cfgFile;
|
||||
|
||||
if (checked) {
|
||||
slotRemotePollIntervalChanged(_ui->remotePollIntervalSpinBox->value());
|
||||
} else {
|
||||
// Reset to default interval when unchecked
|
||||
cfgFile.resetRemotePollInterval();
|
||||
|
||||
// Update the spinbox with the default value
|
||||
auto interval = cfgFile.remotePollInterval();
|
||||
_ui->remotePollIntervalSpinBox->setValue(static_cast<int>(interval.count() / 1000));
|
||||
}
|
||||
}
|
||||
|
||||
void GeneralSettings::slotRemotePollIntervalChanged(int seconds) {
|
||||
if (_currentlyLoading) return;
|
||||
|
||||
if (_ui->remotePollIntervalCheckBox->isChecked()) {
|
||||
ConfigFile cfgFile;
|
||||
std::chrono::milliseconds interval(seconds * 1000);
|
||||
cfgFile.setRemotePollInterval(interval);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace OCC
|
||||
|
||||
@ -59,6 +59,8 @@ private slots:
|
||||
void slotCreateDebugArchive();
|
||||
void loadMiscSettings();
|
||||
void slotShowLegalNotice();
|
||||
void slotRemotePollIntervalChanged(int seconds);
|
||||
void slotRemotePollIntervalCheckBoxToggled(bool checked);
|
||||
#if defined(BUILD_UPDATER)
|
||||
void slotUpdateInfo();
|
||||
void slotUpdateChannelChanged();
|
||||
|
||||
@ -186,6 +186,50 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_remotePollInterval">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="remotePollIntervalCheckBox">
|
||||
<property name="text">
|
||||
<string>Server poll interval</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="remotePollIntervalSpinBox">
|
||||
<property name="minimum">
|
||||
<number>30</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>3600</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>1</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="labelInterval">
|
||||
<property name="text">
|
||||
<string extracomment="Trailing part of "Server poll interval" ">seconds (if <a href="https://github.com/nextcloud/notify_push">Client Push</a> is unavailable)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_remotePollInterval">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_trash">
|
||||
<item>
|
||||
|
||||
@ -1315,4 +1315,25 @@ void ConfigFile::setDiscoveredLegacyConfigPath(const QString &discoveredLegacyCo
|
||||
_discoveredLegacyConfigPath = discoveredLegacyConfigPath;
|
||||
}
|
||||
|
||||
bool ConfigFile::hasRemotePollInterval(const QString &connection) const
|
||||
{
|
||||
QString con(connection);
|
||||
if (connection.isEmpty())
|
||||
con = defaultConnection();
|
||||
|
||||
QSettings settings(configFile(), QSettings::IniFormat);
|
||||
settings.beginGroup(con);
|
||||
|
||||
return settings.contains(QLatin1String(remotePollIntervalC));
|
||||
}
|
||||
|
||||
void ConfigFile::resetRemotePollInterval(const QString &connection) {
|
||||
QString con(connection);
|
||||
if (connection.isEmpty())
|
||||
con = defaultConnection();
|
||||
|
||||
std::chrono::milliseconds defaultInterval(DEFAULT_REMOTE_POLL_INTERVAL);
|
||||
setRemotePollInterval(defaultInterval, con); // Use existing method
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -153,6 +153,8 @@ public:
|
||||
[[nodiscard]] bool useNewBigFolderSizeLimit() const;
|
||||
[[nodiscard]] bool confirmExternalStorage() const;
|
||||
void setConfirmExternalStorage(bool);
|
||||
[[nodiscard]] bool hasRemotePollInterval(const QString &connection = QString()) const;
|
||||
void resetRemotePollInterval(const QString &connection = QString());
|
||||
|
||||
/** If we should move the files deleted on the server in the trash */
|
||||
[[nodiscard]] bool moveToTrash() const;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user