Update README, do a bunch of work on the connection settings engine
This commit is contained in:
parent
03fab13c88
commit
e9e20b8f8a
@ -4,6 +4,8 @@ This is a straightforward-as-possible Qt reimplmentation of the nm-connection-ed
|
||||
|
||||
THIS PROJECT IS IN EARLY ALPHA. It may crash or eat your computer, so treat it with caution.
|
||||
|
||||
Some code has been copied and adapted from the plasma-nm project.
|
||||
|
||||
## Build instructions
|
||||
|
||||
sudo apt build-dep lubuntu-connection-editor
|
||||
@ -13,3 +15,7 @@ THIS PROJECT IS IN EARLY ALPHA. It may crash or eat your computer, so treat it w
|
||||
make -j$(nproc)
|
||||
|
||||
Do not use `sudo make install` - this will bypass the apt package manager and possibly cause trouble. Instead, package this for your distribution following the guidelines and best practices of that distro. If building for Ubuntu, we recommend using either `debuild` (if working on Ubuntu packages is something you do rarely and you want something that's quick to set up) or `sbuild` (if you need to build packages all the time).
|
||||
|
||||
## License and Copyright
|
||||
|
||||
Copyright (c) 2023 Lubuntu Contributors. Licensed under the GNU General Public License version 3 or any later version (GPL-3.0-or-later). This notice applies to all files in this repository.
|
||||
|
@ -14,3 +14,96 @@
|
||||
ConnectionSettingsEngine::ConnectionSettingsEngine()
|
||||
{
|
||||
}
|
||||
|
||||
QVariantMap ConnectionSettingsEngine::readConnectionSettings(QString connUuidStr)
|
||||
{
|
||||
// Contains adapted code from plasma-nm
|
||||
NetworkManager::Connection::Ptr conn = NetworkManager::findConnectionByUuid(connUuidStr);
|
||||
NetworkManager::ConnectionSettings::Ptr connSettings = conn->settings();
|
||||
QVariantMap result;
|
||||
result.insert("autoconnectEnabled", connSettings->autoconnect());
|
||||
result.insert("autoconnectPriority", connSettings->autoconnectPriority());
|
||||
result.insert("allUsersMayConnect", connSettings->permissions().isEmpty() ? true : false);
|
||||
|
||||
QStringList secondaryConns = connSettings->secondaries();
|
||||
|
||||
NetworkManager::Connection::List list = NetworkManager::listConnections();
|
||||
QStringList vpnList;
|
||||
|
||||
for (const NetworkManager::Connection::Ptr &conn : list) {
|
||||
NetworkManager::ConnectionSettings::Ptr conSet = conn->settings();
|
||||
if (conSet->connectionType() == NetworkManager::ConnectionSettings::Vpn
|
||||
|| conSet->connectionType() == NetworkManager::ConnectionSettings::WireGuard) {
|
||||
vpnList.append(conSet->uuid());
|
||||
}
|
||||
}
|
||||
|
||||
if (secondaryConns.isEmpty() || vpnList.isEmpty()) {
|
||||
result.insert("vpnAutoconnectEnabled", false);
|
||||
result.insert("autoconnectVpn", "");
|
||||
} else {
|
||||
for (const QString &vpnKey : vpnList) {
|
||||
if (secondaryConns.contains(vpnKey)) {
|
||||
result.insert("vpnAutoconnectEnabled", true);
|
||||
result.insert("autoconnectVpn", vpnKey);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (connSettings->metered()) {
|
||||
case NetworkManager::ConnectionSettings::MeteredUnknown:
|
||||
case NetworkManager::ConnectionSettings::MeteredGuessYes:
|
||||
case NetworkManager::ConnectionSettings::MeteredGuessNo:
|
||||
result.insert("meteredConnection", "Automatic");
|
||||
break;
|
||||
case NetworkManager::ConnectionSettings::MeteredYes:
|
||||
result.insert("meteredConnection", "Yes");
|
||||
break;
|
||||
case NetworkManager::ConnectionSettings::MeteredNo:
|
||||
result.insert("meteredConnection", "No");
|
||||
break;
|
||||
}
|
||||
|
||||
// TODO: pick up here
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void ConnectionSettingsEngine::modifyConnectionSettings(QString connUuidStr, QVariantMap settings)
|
||||
{
|
||||
// Contains adapted code from plasma-nm
|
||||
NetworkManager::Connection::Ptr conn = NetworkManager::findConnectionByUuid(connUuidStr);
|
||||
NetworkManager::ConnectionSettings::Ptr connSettings = conn->settings();
|
||||
|
||||
if (settings["autoconnectEnabled"].isValid()) {
|
||||
connSettings->setAutoconnect(settings["autoconnectEnabled"].toBool());
|
||||
}
|
||||
if (settings["autoconnectPriority"].isValid()) {
|
||||
connSettings->setAutoconnectPriority(settings["autoconnectPriority"].toInt());
|
||||
}
|
||||
if (settings["allUsersMayConnect"].isValid()) {
|
||||
if (settings["allUsersMayConnect"].toBool()) {
|
||||
connSettings->setPermissions(QHash<QString, QString>());
|
||||
} else {
|
||||
if (connSettings->permissions().isEmpty()) {
|
||||
; // TODO: Add current user to permissiosn list
|
||||
} // Otherwise we just leave the permissions as-is
|
||||
}
|
||||
}
|
||||
|
||||
if (settings["vpnAutoconnectEnabled"].isValid()) {
|
||||
if (settings["vpnAutoconnectEnabled"].toBool()) {
|
||||
connSettings->setSecondaries(QStringList() << settings["autoconnectVpn"].toString());
|
||||
}
|
||||
}
|
||||
|
||||
if (settings["meteredConnection"].isValid()) {
|
||||
QString meteredConnectionStr = settings["meteredConnection"].toString();
|
||||
if (meteredConnectionStr == "Yes") {
|
||||
connSettings->setMetered(NetworkManager::ConnectionSettings::MeteredYes);
|
||||
} else if (meteredConnectionStr == "No") {
|
||||
connSettings->setMetered(NetworkManager::ConnectionSettings::MeteredNo);
|
||||
} // if it's "Automatic" we just leave it be
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,10 @@
|
||||
|
||||
#include <QString>
|
||||
#include <QVariant>
|
||||
#include <QHash>
|
||||
#include <NetworkManagerQt/Connection>
|
||||
#include <NetworkManagerQt/ConnectionSettings>
|
||||
#include <NetworkManagerQt/Settings>
|
||||
|
||||
class ConnectionSettingsEngine
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user