Refactor proxy configuration and move to separate file
This commit is contained in:
@@ -146,6 +146,8 @@ add_library(neochat STATIC
|
|||||||
enums/pushrule.h
|
enums/pushrule.h
|
||||||
models/itinerarymodel.cpp
|
models/itinerarymodel.cpp
|
||||||
models/itinerarymodel.h
|
models/itinerarymodel.h
|
||||||
|
proxycontroller.cpp
|
||||||
|
proxycontroller.h
|
||||||
)
|
)
|
||||||
|
|
||||||
qt_add_qml_module(neochat URI org.kde.neochat NO_PLUGIN
|
qt_add_qml_module(neochat URI org.kde.neochat NO_PLUGIN
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
#include "neochatconfig.h"
|
#include "neochatconfig.h"
|
||||||
#include "neochatroom.h"
|
#include "neochatroom.h"
|
||||||
#include "notificationsmanager.h"
|
#include "notificationsmanager.h"
|
||||||
|
#include "proxycontroller.h"
|
||||||
#include "roommanager.h"
|
#include "roommanager.h"
|
||||||
|
|
||||||
#if defined(Q_OS_WIN) || defined(Q_OS_MAC)
|
#if defined(Q_OS_WIN) || defined(Q_OS_MAC)
|
||||||
@@ -45,7 +46,7 @@ Controller::Controller(QObject *parent)
|
|||||||
{
|
{
|
||||||
Connection::setRoomType<NeoChatRoom>();
|
Connection::setRoomType<NeoChatRoom>();
|
||||||
|
|
||||||
setApplicationProxy();
|
ProxyController::instance().setApplicationProxy();
|
||||||
|
|
||||||
#ifndef Q_OS_ANDROID
|
#ifndef Q_OS_ANDROID
|
||||||
setQuitOnLastWindowClosed();
|
setQuitOnLastWindowClosed();
|
||||||
@@ -315,36 +316,6 @@ void Controller::listenForNotifications()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Controller::setApplicationProxy()
|
|
||||||
{
|
|
||||||
NeoChatConfig *cfg = NeoChatConfig::self();
|
|
||||||
QNetworkProxy proxy;
|
|
||||||
|
|
||||||
// type match to ProxyType from neochatconfig.kcfg
|
|
||||||
switch (cfg->proxyType()) {
|
|
||||||
case 1: // HTTP
|
|
||||||
proxy.setType(QNetworkProxy::HttpProxy);
|
|
||||||
proxy.setHostName(cfg->proxyHost());
|
|
||||||
proxy.setPort(cfg->proxyPort());
|
|
||||||
proxy.setUser(cfg->proxyUser());
|
|
||||||
proxy.setPassword(cfg->proxyPassword());
|
|
||||||
break;
|
|
||||||
case 2: // SOCKS 5
|
|
||||||
proxy.setType(QNetworkProxy::Socks5Proxy);
|
|
||||||
proxy.setHostName(cfg->proxyHost());
|
|
||||||
proxy.setPort(cfg->proxyPort());
|
|
||||||
proxy.setUser(cfg->proxyUser());
|
|
||||||
proxy.setPassword(cfg->proxyPassword());
|
|
||||||
break;
|
|
||||||
case 0: // System Default
|
|
||||||
default:
|
|
||||||
// do nothing
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
QNetworkProxy::setApplicationProxy(proxy);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Controller::isFlatpak() const
|
bool Controller::isFlatpak() const
|
||||||
{
|
{
|
||||||
#ifdef NEOCHAT_FLATPAK
|
#ifdef NEOCHAT_FLATPAK
|
||||||
|
|||||||
@@ -84,13 +84,6 @@ public:
|
|||||||
|
|
||||||
[[nodiscard]] bool supportSystemTray() const;
|
[[nodiscard]] bool supportSystemTray() const;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Sets the QNetworkProxy for the application.
|
|
||||||
*
|
|
||||||
* @sa QNetworkProxy::setApplicationProxy
|
|
||||||
*/
|
|
||||||
Q_INVOKABLE void setApplicationProxy();
|
|
||||||
|
|
||||||
bool isFlatpak() const;
|
bool isFlatpak() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
35
src/proxycontroller.cpp
Normal file
35
src/proxycontroller.cpp
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
// SPDX-FileCopyrightText: 2024 Tobias Fella <tobias.fella@kde.org>
|
||||||
|
// SPDX-License-Identifier: LGPL-2.0-or-later
|
||||||
|
|
||||||
|
#include "proxycontroller.h"
|
||||||
|
|
||||||
|
#include <QNetworkProxy>
|
||||||
|
|
||||||
|
#include "neochatconfig.h"
|
||||||
|
|
||||||
|
void ProxyController::setApplicationProxy()
|
||||||
|
{
|
||||||
|
auto cfg = NeoChatConfig::self();
|
||||||
|
QNetworkProxy proxy;
|
||||||
|
|
||||||
|
switch (cfg->proxyType()) {
|
||||||
|
case 1:
|
||||||
|
proxy.setType(QNetworkProxy::HttpProxy);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
proxy.setType(QNetworkProxy::Socks5Proxy);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
proxy.setHostName(cfg->proxyHost());
|
||||||
|
proxy.setPort(cfg->proxyPort());
|
||||||
|
proxy.setUser(cfg->proxyUser());
|
||||||
|
proxy.setPassword(cfg->proxyPassword());
|
||||||
|
QNetworkProxy::setApplicationProxy(proxy);
|
||||||
|
}
|
||||||
|
|
||||||
|
ProxyController::ProxyController(QObject *parent)
|
||||||
|
: QObject(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
36
src/proxycontroller.h
Normal file
36
src/proxycontroller.h
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
// SPDX-FileCopyrightText: 2024 Tobias Fella <tobias.fella@kde.org>
|
||||||
|
// SPDX-License-Identifier: LGPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QQmlEngine>
|
||||||
|
|
||||||
|
class ProxyController : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
QML_ELEMENT
|
||||||
|
QML_SINGLETON
|
||||||
|
|
||||||
|
public:
|
||||||
|
static ProxyController &instance()
|
||||||
|
{
|
||||||
|
static ProxyController _instance;
|
||||||
|
return _instance;
|
||||||
|
}
|
||||||
|
static ProxyController *create(QQmlEngine *engine, QJSEngine *)
|
||||||
|
{
|
||||||
|
engine->setObjectOwnership(&instance(), QQmlEngine::CppOwnership);
|
||||||
|
return &instance();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Sets the QNetworkProxy for the application.
|
||||||
|
*
|
||||||
|
* @sa QNetworkProxy::setApplicationProxy
|
||||||
|
*/
|
||||||
|
Q_INVOKABLE void setApplicationProxy();
|
||||||
|
|
||||||
|
private:
|
||||||
|
explicit ProxyController(QObject *parent = nullptr);
|
||||||
|
};
|
||||||
@@ -113,7 +113,7 @@ FormCard.FormCardPage {
|
|||||||
Config.proxyPassword = passwordField.text
|
Config.proxyPassword = passwordField.text
|
||||||
Config.save()
|
Config.save()
|
||||||
proxyConfigChanged = false
|
proxyConfigChanged = false
|
||||||
Controller.setApplicationProxy()
|
ProxyController.setApplicationProxy()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user