mirror of
https://github.com/amnezia-vpn/amnezia-client.git
synced 2026-06-21 02:01:03 +07:00
80 lines
2.7 KiB
C++
80 lines
2.7 KiB
C++
|
|
#include "appSplitTunnelingUiController.h"
|
||
|
|
|
||
|
|
#include <QFileInfo>
|
||
|
|
|
||
|
|
#include "core/utils/errorCodes.h"
|
||
|
|
#include "core/utils/routeModes.h"
|
||
|
|
#include "core/utils/commonStructs.h"
|
||
|
|
|
||
|
|
AppSplitTunnelingUiController::AppSplitTunnelingUiController(AppSplitTunnelingController* appSplitTunnelingController,
|
||
|
|
AppSplitTunnelingModel* appSplitTunnelingModel,
|
||
|
|
QObject *parent)
|
||
|
|
: QObject(parent),
|
||
|
|
m_appSplitTunnelingController(appSplitTunnelingController),
|
||
|
|
m_appSplitTunnelingModel(appSplitTunnelingModel)
|
||
|
|
{
|
||
|
|
m_appSplitTunnelingModel->updateModel(m_appSplitTunnelingController->getApps());
|
||
|
|
}
|
||
|
|
|
||
|
|
void AppSplitTunnelingUiController::addApp(const QString &appPath)
|
||
|
|
{
|
||
|
|
amnezia::InstalledAppInfo appInfo { "", "", appPath };
|
||
|
|
if (!appPath.isEmpty()) {
|
||
|
|
QFileInfo fileInfo(appPath);
|
||
|
|
appInfo.appName = fileInfo.fileName();
|
||
|
|
}
|
||
|
|
|
||
|
|
if (m_appSplitTunnelingController->addApp(appInfo)) {
|
||
|
|
emit finished(tr("Application added: %1").arg(appInfo.appName));
|
||
|
|
} else {
|
||
|
|
emit errorOccurred(tr("The application has already been added"));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void AppSplitTunnelingUiController::addApps(QVector<QPair<QString, QString>> apps)
|
||
|
|
{
|
||
|
|
for (const auto &app : apps) {
|
||
|
|
amnezia::InstalledAppInfo appInfo { app.first, app.second, "" };
|
||
|
|
m_appSplitTunnelingController->addApp(appInfo);
|
||
|
|
}
|
||
|
|
emit finished(tr("The selected applications have been added"));
|
||
|
|
}
|
||
|
|
|
||
|
|
void AppSplitTunnelingUiController::removeApp(const int index)
|
||
|
|
{
|
||
|
|
auto modelIndex = m_appSplitTunnelingModel->index(index);
|
||
|
|
auto appPath = m_appSplitTunnelingModel->data(modelIndex, AppSplitTunnelingModel::Roles::AppPathRole).toString();
|
||
|
|
m_appSplitTunnelingController->removeApp(index);
|
||
|
|
|
||
|
|
QFileInfo fileInfo(appPath);
|
||
|
|
emit finished(tr("Application removed: %1").arg(fileInfo.fileName()));
|
||
|
|
}
|
||
|
|
|
||
|
|
void AppSplitTunnelingUiController::toggleSplitTunneling(bool enabled)
|
||
|
|
{
|
||
|
|
m_appSplitTunnelingController->toggleSplitTunneling(enabled);
|
||
|
|
emit isSplitTunnelingEnabledChanged();
|
||
|
|
}
|
||
|
|
|
||
|
|
void AppSplitTunnelingUiController::setRouteMode(int routeMode)
|
||
|
|
{
|
||
|
|
m_appSplitTunnelingController->setRouteMode(static_cast<amnezia::AppsRouteMode>(routeMode));
|
||
|
|
emit routeModeChanged();
|
||
|
|
}
|
||
|
|
|
||
|
|
int AppSplitTunnelingUiController::getRouteMode() const
|
||
|
|
{
|
||
|
|
return static_cast<int>(m_appSplitTunnelingController->getRouteMode());
|
||
|
|
}
|
||
|
|
|
||
|
|
bool AppSplitTunnelingUiController::isSplitTunnelingEnabled() const
|
||
|
|
{
|
||
|
|
return m_appSplitTunnelingController->isSplitTunnelingEnabled();
|
||
|
|
}
|
||
|
|
|
||
|
|
void AppSplitTunnelingUiController::updateModel()
|
||
|
|
{
|
||
|
|
m_appSplitTunnelingModel->updateModel(m_appSplitTunnelingController->getApps());
|
||
|
|
}
|
||
|
|
|