File indexing completed on 2024-12-08 08:02:36
0001 /* 0002 SPDX-FileCopyrightText: 2008-2010 Sebastian Kügler <sebas@kde.org> 0003 SPDX-FileCopyrightText: 2013-2014 Jan Grulich <jgrulich@redhat.com> 0004 0005 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0006 */ 0007 0008 #ifndef PLASMA_NM_UIUTILS_H 0009 #define PLASMA_NM_UIUTILS_H 0010 0011 #include "plasmanm_editor_export.h" 0012 0013 #include <NetworkManagerQt/AccessPoint> 0014 #include <NetworkManagerQt/BluetoothDevice> 0015 #include <NetworkManagerQt/Device> 0016 #include <NetworkManagerQt/ModemDevice> 0017 #include <NetworkManagerQt/Utils> 0018 #include <NetworkManagerQt/VpnConnection> 0019 #include <NetworkManagerQt/VpnSetting> 0020 #include <NetworkManagerQt/WiredDevice> 0021 #include <NetworkManagerQt/WirelessDevice> 0022 #include <NetworkManagerQt/WirelessSetting> 0023 0024 #include <ModemManager/ModemManager.h> 0025 #include <ModemManagerQt/Modem> 0026 0027 class PLASMANM_EDITOR_EXPORT UiUtils 0028 { 0029 public: 0030 enum SortedConnectionType { 0031 Wired, 0032 Wireless, 0033 Gsm, 0034 Cdma, 0035 Pppoe, 0036 Adsl, 0037 Infiniband, 0038 OLPCMesh, 0039 Bluetooth, 0040 Wireguard, 0041 Vpn, 0042 Vlan, 0043 Bridge, 0044 Bond, 0045 Team, 0046 Unknown, 0047 }; 0048 0049 /* 0050 * @return sorted connection type used to prioritize specific connection types 0051 */ 0052 static SortedConnectionType connectionTypeToSortedType(NetworkManager::ConnectionSettings::ConnectionType type); 0053 0054 /* 0055 * @return whether given connection type is supported 0056 * Currently ignored connection types: Bond, Bridge, Generic, Infiniband, Team, Vlan, Tun 0057 */ 0058 static bool isConnectionTypeSupported(NetworkManager::ConnectionSettings::ConnectionType type); 0059 0060 /** 0061 * @return true if the connection is virtual. 0062 * @param type Type of the network connection 0063 */ 0064 static bool isConnectionTypeVirtual(NetworkManager::ConnectionSettings::ConnectionType type); 0065 0066 /** 0067 * @return a human-readable description for the network interface type for use as label 0068 * @param type the type of the network interface 0069 */ 0070 static QString interfaceTypeLabel(const NetworkManager::Device::Type type, const NetworkManager::Device::Ptr iface); 0071 0072 /** 0073 * @return a human-readable name for a given network interface according to the configured 0074 * naming style 0075 * @param type type of the network interface 0076 * @param interfaceName name of the network interface (eg eth0) 0077 */ 0078 static QString prettyInterfaceName(NetworkManager::Device::Type type, const QString &interfaceName); 0079 0080 /** 0081 * @return a human-readable description of the connection state of a given network interface 0082 * @param state The connection state 0083 */ 0084 static QString connectionStateToString(NetworkManager::Device::State state, const QString &connectionName = QString()); 0085 0086 static QString vpnConnectionStateToString(NetworkManager::VpnConnection::State state); 0087 0088 static QString iconAndTitleForConnectionSettingsType(NetworkManager::ConnectionSettings::ConnectionType type, QString &title); 0089 /** 0090 * @return a human-readable description of operation mode. 0091 * @param mode the operation mode 0092 */ 0093 static QString operationModeToString(NetworkManager::WirelessDevice::OperationMode mode); 0094 0095 /** 0096 * @return string list with a human-readable description of wpa flags. 0097 * @param flags the wpa flags 0098 */ 0099 static QStringList wpaFlagsToStringList(NetworkManager::AccessPoint::WpaFlags flags); 0100 0101 /** 0102 * @return localized string showing a human-readable connection speed. 1000 is used as base. 0103 * @param bitrate bitrate of the connection per second 0104 */ 0105 static QString connectionSpeed(double bitrate); 0106 0107 /** 0108 * @param band The band of a wireless network. The value corresponds to the type enum in Knm::WirelessSetting::EnumBand 0109 * @return A string representation 0110 */ 0111 static QString wirelessBandToString(NetworkManager::WirelessSetting::FrequencyBand band); 0112 0113 /** 0114 * @param frequency The frequency of a wireless network access point in MHz 0115 * @return A string representation 0116 */ 0117 static QString wirelessFrequencyToString(uint frequency); 0118 0119 /** 0120 * Check whether we're running in a live image session. 0121 */ 0122 static bool isLiveImage(); 0123 0124 /** 0125 * Setup default permissions for a new connection. 0126 * 0127 * This determines whether we should use system connections or user 0128 * connections by default and sets the default permissions accordingly. 0129 * System connections are preferred if either the preference for that is 0130 * set, KWallet is not enabled or we're running in a live image. However, if 0131 * we do not have permissions to create system connections, we fall back to 0132 * user connections. 0133 * 0134 * @param settings The connection settings to setup. 0135 * @param liveSession Whether we are running a session from a live disk image. 0136 */ 0137 static void setConnectionDefaultPermissions(NetworkManager::ConnectionSettings::Ptr &settings); 0138 0139 static QString convertAllowedModeToString(ModemManager::Modem::ModemModes mode); 0140 static QString convertAccessTechnologyToString(ModemManager::Modem::AccessTechnologies tech); 0141 static QString convertLockReasonToString(MMModemLock reason); 0142 static NetworkManager::ModemDevice::Capability modemSubType(NetworkManager::ModemDevice::Capabilities modemCaps); 0143 static QString labelFromWirelessSecurity(NetworkManager::WirelessSecurityType type); 0144 0145 static QString formatDateRelative(const QDateTime &lastUsed); 0146 static QString formatLastUsedDateRelative(const QDateTime &lastUsed); 0147 }; 0148 #endif // UIUTILS_H