Files
amnezia-client/client/ui/controllers/appSplitTunnelingUiController.cpp
T

80 lines
2.7 KiB
C++
Raw Normal View History

#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());
}