diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0948cb859..77122499e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,6 +20,7 @@
#
# Variables:
# BUILD_WITH_QT6 - Build either with Qt 6 or Qt 5.
+# NO_UPDATE_CHECK - Disable automatic checking for new application updates.
# USE_WEBENGINE - if specified, then QtWebEngine module for internal web browser is used.
# Otherwise simple text component is used and some features will be disabled.
# Default value is "false". If QtWebEngine is installed during compilation, then
@@ -106,6 +107,7 @@ option(USE_WEBENGINE "Use QtWebEngine for embedded web browser" ON)
option(UPDATE_TRANSLATIONS "Call lupdate to update translation files from source (Qt 6 only)" OFF)
option(FORCE_COLORED_OUTPUT "Always produce ANSI-colored output (GCC/Clang only)" OFF)
option(REVISION_FROM_GIT "Get revision using `git rev-parse`" ON)
+option(NO_UPDATE_CHECK "Disable automatic checking for new application updates" OFF)
# Import Qt libraries.
set(QT6_MIN_VERSION 6.3.0)
@@ -203,6 +205,10 @@ add_compile_definitions(
_UNICODE
)
+if(NO_UPDATE_CHECK)
+ add_compile_definitions(NO_UPDATE_CHECK)
+endif()
+
# Configure and copy some needed files.
if(WIN32)
configure_file(
diff --git a/resources/desktop/com.github.rssguard.appdata.xml b/resources/desktop/com.github.rssguard.appdata.xml
index 50d646243..7786cf8f1 100644
--- a/resources/desktop/com.github.rssguard.appdata.xml
+++ b/resources/desktop/com.github.rssguard.appdata.xml
@@ -26,7 +26,7 @@
https://github.com/sponsors/martinrotter
-
+
none
diff --git a/src/librssguard/gui/settings/settingsgeneral.cpp b/src/librssguard/gui/settings/settingsgeneral.cpp
index cf6feffed..0dae66030 100644
--- a/src/librssguard/gui/settings/settingsgeneral.cpp
+++ b/src/librssguard/gui/settings/settingsgeneral.cpp
@@ -11,6 +11,10 @@ SettingsGeneral::SettingsGeneral(Settings* settings, QWidget* parent)
m_ui->m_checkAutostart->setText(m_ui->m_checkAutostart->text().arg(QSL(APP_NAME)));
m_ui->m_checkForUpdatesOnStart->setText(m_ui->m_checkForUpdatesOnStart->text().arg(QSL(APP_NAME)));
+#if defined(NO_UPDATE_CHECK)
+ m_ui->m_checkForUpdatesOnStart->setVisible(false);
+#endif
+
connect(m_ui->m_checkAutostart, &QCheckBox::stateChanged, this, &SettingsGeneral::dirtifySettings);
connect(m_ui->m_checkForUpdatesOnStart, &QCheckBox::stateChanged, this, &SettingsGeneral::dirtifySettings);
}
@@ -21,7 +25,8 @@ SettingsGeneral::~SettingsGeneral() {
void SettingsGeneral::loadSettings() {
onBeginLoadSettings();
- m_ui->m_checkForUpdatesOnStart->setChecked(settings()->value(GROUP(General), SETTING(General::UpdateOnStartup)).toBool());
+ m_ui->m_checkForUpdatesOnStart
+ ->setChecked(settings()->value(GROUP(General), SETTING(General::UpdateOnStartup)).toBool());
// Load auto-start status.
const SystemFactory::AutoStartStatus autostart_status = qApp->system()->autoStartStatus();
diff --git a/src/librssguard/miscellaneous/systemfactory.cpp b/src/librssguard/miscellaneous/systemfactory.cpp
index 83de50fbe..5b8f4debe 100644
--- a/src/librssguard/miscellaneous/systemfactory.cpp
+++ b/src/librssguard/miscellaneous/systemfactory.cpp
@@ -48,10 +48,9 @@ SystemFactory::AutoStartStatus SystemFactory::autoStartStatus() const {
#if defined(Q_OS_WIN)
QSettings registry_key(QSL("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"),
QSettings::Format::NativeFormat);
- const bool autostart_enabled = registry_key.value(QSL(APP_LOW_NAME),
- QString()).toString().replace(QL1C('\\'),
- QL1C('/')) ==
- Application::applicationFilePath();
+ const bool autostart_enabled =
+ registry_key.value(QSL(APP_LOW_NAME), QString()).toString().replace(QL1C('\\'), QL1C('/')) ==
+ Application::applicationFilePath();
if (autostart_enabled) {
return AutoStartStatus::Enabled;
@@ -122,12 +121,12 @@ bool SystemFactory::setAutoStartStatus(AutoStartStatus new_status) {
}
#if defined(Q_OS_WIN)
- QSettings registry_key(QSL("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"), QSettings::NativeFormat);
+ QSettings registry_key(QSL("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"),
+ QSettings::NativeFormat);
switch (new_status) {
case AutoStartStatus::Enabled:
- registry_key.setValue(QSL(APP_LOW_NAME),
- Application::applicationFilePath().replace(QL1C('/'), QL1C('\\')));
+ registry_key.setValue(QSL(APP_LOW_NAME), Application::applicationFilePath().replace(QL1C('/'), QL1C('\\')));
return true;
case AutoStartStatus::Disabled:
@@ -155,7 +154,8 @@ bool SystemFactory::setAutoStartStatus(AutoStartStatus new_status) {
return false;
}
- const QString source_autostart_desktop_file = QString(APP_DESKTOP_ENTRY_PATH) + QDir::separator() + APP_DESKTOP_SOURCE_ENTRY_FILE;
+ const QString source_autostart_desktop_file =
+ QString(APP_DESKTOP_ENTRY_PATH) + QDir::separator() + APP_DESKTOP_SOURCE_ENTRY_FILE;
return QFile::copy(source_autostart_desktop_file, destination_file);
}
@@ -204,26 +204,29 @@ void SystemFactory::checkForUpdates() const {
}
void SystemFactory::checkForUpdatesOnStartup() {
+#if !defined(NO_UPDATE_CHECK)
if (qApp->settings()->value(GROUP(General), SETTING(General::UpdateOnStartup)).toBool()) {
- QObject::connect(qApp->system(), &SystemFactory::updatesChecked,
- this, [&](const QPair, QNetworkReply::NetworkError>& updates) {
- QObject::disconnect(qApp->system(), &SystemFactory::updatesChecked, this, nullptr);
+ QObject::connect(qApp->system(),
+ &SystemFactory::updatesChecked,
+ this,
+ [&](const QPair, QNetworkReply::NetworkError>& updates) {
+ QObject::disconnect(qApp->system(), &SystemFactory::updatesChecked, this, nullptr);
- if (!updates.first.isEmpty() &&
- updates.second == QNetworkReply::NetworkError::NoError &&
- SystemFactory::isVersionNewer(updates.first.at(0).m_availableVersion, QSL(APP_VERSION))) {
- qApp->showGuiMessage(Notification::Event::NewAppVersionAvailable, {
- QObject::tr("New version available"),
- QObject::tr("Click the bubble for more information."),
- QSystemTrayIcon::Information }, {}, {
- tr("See new version info"),
- [] {
- FormUpdate(qApp->mainForm()).exec();
- } });
- }
- });
+ if (!updates.first.isEmpty() && updates.second == QNetworkReply::NetworkError::NoError &&
+ SystemFactory::isVersionNewer(updates.first.at(0).m_availableVersion, QSL(APP_VERSION))) {
+ qApp->showGuiMessage(Notification::Event::NewAppVersionAvailable,
+ {QObject::tr("New version available"),
+ QObject::tr("Click the bubble for more information."),
+ QSystemTrayIcon::Information},
+ {},
+ {tr("See new version info"), [] {
+ FormUpdate(qApp->mainForm()).exec();
+ }});
+ }
+ });
qApp->system()->checkForUpdates();
}
+#endif
}
bool SystemFactory::isVersionNewer(const QString& new_version, const QString& base_version) {
@@ -239,8 +242,7 @@ bool SystemFactory::isVersionEqualOrNewer(const QString& new_version, const QStr
bool SystemFactory::openFolderFile(const QString& file_path) {
#if defined(Q_OS_WIN)
- return QProcess::startDetached(QSL("explorer.exe"),
- { "/select,", QDir::toNativeSeparators(file_path) });
+ return QProcess::startDetached(QSL("explorer.exe"), {"/select,", QDir::toNativeSeparators(file_path)});
#else
const QString folder = QDir::toNativeSeparators(QFileInfo(file_path).absoluteDir().absolutePath());