[multimedia/kasts] src: Centralize app-wide network settings into one object
Bart De Vries <[email protected]> Tue, 4 Aug 2026 12:39:01 +0000 (UTC)
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit 467ddac858d68d23201bba83a81d6ed7dcd3abda by Bart De Vries.
Committed on 04/08/2026 at 12:09.
Pushed by bdevries into branch 'master'.
Centralize app-wide network settings into one object
And then of course, use this NetworkAccessManager object everywhere
where needed.
M +1 -0 src/CMakeLists.txt
M +1 -16 src/main.cpp
M +10 -11 src/utils/networkaccessmanager.cpp
M +4 -8 src/utils/networkaccessmanager.h
A +27 -0 src/utils/networkaccessmanagerfactory.cpp [License: GPL(3+eV) GPL(v3.0) GPL(v2.0)]
A +17 -0 src/utils/networkaccessmanagerfactory.h [License: GPL(3+eV) GPL(v3.0) GPL(v2.0)]
https://invent.kde.org/multimedia/kasts/-/commit/467ddac858d68d23201bba83a81d6ed7dcd3abda
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index c2f3bf20..2bc67cdc 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -23,6 +23,7 @@ add_executable(kasts
utils/fetchfeedsjob.cpp
utils/systrayicon.cpp
utils/networkaccessmanager.cpp
+ utils/networkaccessmanagerfactory.cpp
utils/networkconnectionmanager.cpp
utils/colorschemer.cpp
utils/utils.cpp
diff --git a/src/main.cpp b/src/main.cpp
index 6e1c7955..66a0c9ba 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -23,7 +23,6 @@
#include <QStringList>
#include <QSysInfo>
#include <QVariant>
-#include <klocalizedqmlcontext.h>
#ifdef Q_OS_ANDROID
#include <QGuiApplication>
@@ -57,6 +56,7 @@
#include "kasts-version.h"
#include "settingsmanager.h"
#include "utils/colorschemer.h"
+#include "utils/networkaccessmanagerfactory.h"
#ifdef Q_OS_WINDOWS
#include <windows.h>
@@ -66,21 +66,6 @@
Q_DECL_EXPORT
#endif
-class NetworkAccessManagerFactory : public QQmlNetworkAccessManagerFactory
-{
-public:
- QNetworkAccessManager *create(QObject *parent) override
- {
- QNetworkAccessManager *manager = new QNetworkAccessManager(parent);
- auto cache = new QNetworkDiskCache(manager);
- QString directory = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QLatin1StringView("/cacheDir/");
- cache->setCacheDirectory(directory);
- cache->setMaximumCacheSize(500 * 1024 * 1024);
- manager->setCache(cache);
- return manager;
- }
-};
-
int main(int argc, char *argv[])
{
// Check if we need to force the interface to mobile or desktop, or stick
diff --git a/src/utils/networkaccessmanager.cpp b/src/utils/networkaccessmanager.cpp
index a0e03ab8..09fa577f 100644
--- a/src/utils/networkaccessmanager.cpp
+++ b/src/utils/networkaccessmanager.cpp
@@ -13,33 +13,32 @@
#include "kasts-version.h"
NetworkAccessManager::NetworkAccessManager(QObject *parent)
- : QObject(parent)
+ : QNetworkAccessManager(parent)
{
- m_manager = new QNetworkAccessManager(this);
- m_manager->setRedirectPolicy(QNetworkRequest::NoLessSafeRedirectPolicy);
- m_manager->setStrictTransportSecurityEnabled(true);
+ this->setRedirectPolicy(QNetworkRequest::NoLessSafeRedirectPolicy);
+ this->setStrictTransportSecurityEnabled(true);
// HACK TODO: Disable hstsstore temporarily because of malloc crash deep in
// qt6 somewhere. This is to be reenabled once the bug is solved upstream
- m_manager->enableStrictTransportSecurityStore(false);
+ this->enableStrictTransportSecurityStore(false);
}
-QNetworkReply *NetworkAccessManager::get(QNetworkRequest &request) const
+QNetworkReply *NetworkAccessManager::get(QNetworkRequest &request)
{
setHeader(request);
- return m_manager->get(request);
+ return QNetworkAccessManager::get(request);
}
-QNetworkReply *NetworkAccessManager::post(QNetworkRequest &request, const QByteArray &data) const
+QNetworkReply *NetworkAccessManager::post(QNetworkRequest &request, const QByteArray &data)
{
setHeader(request);
request.setHeader(QNetworkRequest::ContentTypeHeader, QLatin1String("application/json"));
- return m_manager->post(request, data);
+ return QNetworkAccessManager::post(request, data);
}
-QNetworkReply *NetworkAccessManager::head(QNetworkRequest &request) const
+QNetworkReply *NetworkAccessManager::head(QNetworkRequest &request)
{
setHeader(request);
- return m_manager->head(request);
+ return QNetworkAccessManager::head(request);
}
void NetworkAccessManager::setHeader(QNetworkRequest &request) const
diff --git a/src/utils/networkaccessmanager.h b/src/utils/networkaccessmanager.h
index 5586c94b..04a4f9c0 100644
--- a/src/utils/networkaccessmanager.h
+++ b/src/utils/networkaccessmanager.h
@@ -11,21 +11,17 @@
#include <QNetworkRequest>
#include <QObject>
-class NetworkAccessManager : public QObject
+class NetworkAccessManager : public QNetworkAccessManager
{
Q_OBJECT
public:
NetworkAccessManager(QObject *parent = nullptr);
- QNetworkReply *get(QNetworkRequest &request) const;
- QNetworkReply *post(QNetworkRequest &request, const QByteArray &data) const;
- QNetworkReply *head(QNetworkRequest &request) const;
-
-Q_SIGNALS:
+ QNetworkReply *get(QNetworkRequest &request);
+ QNetworkReply *post(QNetworkRequest &request, const QByteArray &data);
+ QNetworkReply *head(QNetworkRequest &request);
private:
void setHeader(QNetworkRequest &request) const;
-
- QNetworkAccessManager *m_manager;
};
diff --git a/src/utils/networkaccessmanagerfactory.cpp b/src/utils/networkaccessmanagerfactory.cpp
new file mode 100644
index 00000000..dcfa43e5
--- /dev/null
+++ b/src/utils/networkaccessmanagerfactory.cpp
@@ -0,0 +1,27 @@
+/**
+ * SPDX-FileCopyrightText: 2026 Tobias Fella <[email protected]>
+ * SPDX-FileCopyrightText: 2026 Bart De Vries <[email protected]>
+ *
+ * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
+ */
+
+#include "utils/networkaccessmanagerfactory.h"
+
+#include <QNetworkAccessManager>
+#include <QNetworkDiskCache>
+#include <QQmlNetworkAccessManagerFactory>
+#include <QStandardPaths>
+
+#include "utils/networkaccessmanager.h"
+#include "utils/storagemanager.h"
+
+QNetworkAccessManager *NetworkAccessManagerFactory::create(QObject *parent)
+{
+ QNetworkAccessManager *manager = new NetworkAccessManager(parent);
+ auto cache = new QNetworkDiskCache(manager);
+ QString directory = StorageManager::instance().imageDirPath();
+ cache->setCacheDirectory(directory);
+ cache->setMaximumCacheSize(500 * 1024 * 1024);
+ manager->setCache(cache);
+ return manager;
+}
diff --git a/src/utils/networkaccessmanagerfactory.h b/src/utils/networkaccessmanagerfactory.h
new file mode 100644
index 00000000..4f1a3f9c
--- /dev/null
+++ b/src/utils/networkaccessmanagerfactory.h
@@ -0,0 +1,17 @@
+/**
+ * SPDX-FileCopyrightText: 2026 Tobias Fella <[email protected]>
+ * SPDX-FileCopyrightText: 2026 Bart De Vries <[email protected]>
+ *
+ * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
+ */
+
+#pragma once
+
+#include <QNetworkAccessManager>
+#include <QQmlNetworkAccessManagerFactory>
+
+class NetworkAccessManagerFactory : public QQmlNetworkAccessManagerFactory
+{
+public:
+ QNetworkAccessManager *create(QObject *parent) override;
+};