File indexing completed on 2024-04-21 04:00:04

0001 /*
0002     SPDX-FileCopyrightText: 2012-2013 Jan Grulich <jgrulich@redhat.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #include "olpcmeshsetting.h"
0008 #include "olpcmeshsetting_p.h"
0009 
0010 #include <QDebug>
0011 
0012 NetworkManager::OlpcMeshSettingPrivate::OlpcMeshSettingPrivate()
0013     : name(NM_SETTING_OLPC_MESH_SETTING_NAME)
0014     , channel(0)
0015 {
0016 }
0017 
0018 NetworkManager::OlpcMeshSetting::OlpcMeshSetting()
0019     : Setting(Setting::Bond)
0020     , d_ptr(new OlpcMeshSettingPrivate())
0021 {
0022 }
0023 
0024 NetworkManager::OlpcMeshSetting::OlpcMeshSetting(const Ptr &other)
0025     : Setting(other)
0026     , d_ptr(new OlpcMeshSettingPrivate())
0027 {
0028     setSsid(other->ssid());
0029     setChannel(other->channel());
0030     setDhcpAnycastAddress(other->dhcpAnycastAddress());
0031 }
0032 
0033 NetworkManager::OlpcMeshSetting::~OlpcMeshSetting()
0034 {
0035     delete d_ptr;
0036 }
0037 
0038 QString NetworkManager::OlpcMeshSetting::name() const
0039 {
0040     Q_D(const OlpcMeshSetting);
0041 
0042     return d->name;
0043 }
0044 
0045 void NetworkManager::OlpcMeshSetting::setSsid(const QByteArray &ssid)
0046 {
0047     Q_D(OlpcMeshSetting);
0048 
0049     d->ssid = ssid;
0050 }
0051 
0052 QByteArray NetworkManager::OlpcMeshSetting::ssid() const
0053 {
0054     Q_D(const OlpcMeshSetting);
0055 
0056     return d->ssid;
0057 }
0058 
0059 void NetworkManager::OlpcMeshSetting::setChannel(quint32 channel)
0060 {
0061     Q_D(OlpcMeshSetting);
0062 
0063     d->channel = channel;
0064 }
0065 
0066 quint32 NetworkManager::OlpcMeshSetting::channel() const
0067 {
0068     Q_D(const OlpcMeshSetting);
0069 
0070     return d->channel;
0071 }
0072 
0073 void NetworkManager::OlpcMeshSetting::setDhcpAnycastAddress(const QByteArray &address)
0074 {
0075     Q_D(OlpcMeshSetting);
0076 
0077     d->dhcpAnycastAddress = address;
0078 }
0079 
0080 QByteArray NetworkManager::OlpcMeshSetting::dhcpAnycastAddress() const
0081 {
0082     Q_D(const OlpcMeshSetting);
0083 
0084     return d->dhcpAnycastAddress;
0085 }
0086 
0087 void NetworkManager::OlpcMeshSetting::fromMap(const QVariantMap &setting)
0088 {
0089     if (setting.contains(QLatin1String(NM_SETTING_OLPC_MESH_SSID))) {
0090         setSsid(setting.value(QLatin1String(NM_SETTING_OLPC_MESH_SSID)).toByteArray());
0091     }
0092 
0093     if (setting.contains(QLatin1String(NM_SETTING_OLPC_MESH_CHANNEL))) {
0094         setChannel(setting.value(QLatin1String(NM_SETTING_OLPC_MESH_CHANNEL)).toUInt());
0095     }
0096 
0097     if (setting.contains(QLatin1String(NM_SETTING_OLPC_MESH_DHCP_ANYCAST_ADDRESS))) {
0098         setDhcpAnycastAddress(setting.value(QLatin1String(NM_SETTING_OLPC_MESH_DHCP_ANYCAST_ADDRESS)).toByteArray());
0099     }
0100 }
0101 
0102 QVariantMap NetworkManager::OlpcMeshSetting::toMap() const
0103 {
0104     QVariantMap setting;
0105 
0106     if (!ssid().isEmpty()) {
0107         setting.insert(QLatin1String(NM_SETTING_OLPC_MESH_SSID), ssid());
0108     }
0109 
0110     if (channel()) {
0111         setting.insert(QLatin1String(NM_SETTING_OLPC_MESH_CHANNEL), channel());
0112     }
0113 
0114     if (!dhcpAnycastAddress().isEmpty()) {
0115         setting.insert(QLatin1String(NM_SETTING_OLPC_MESH_DHCP_ANYCAST_ADDRESS), dhcpAnycastAddress());
0116     }
0117 
0118     return setting;
0119 }
0120 
0121 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::OlpcMeshSetting &setting)
0122 {
0123     dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n';
0124     dbg.nospace() << "initialized: " << !setting.isNull() << '\n';
0125 
0126     dbg.nospace() << NM_SETTING_OLPC_MESH_SSID << ": " << setting.ssid() << '\n';
0127     dbg.nospace() << NM_SETTING_OLPC_MESH_CHANNEL << ": " << setting.channel() << '\n';
0128     dbg.nospace() << NM_SETTING_OLPC_MESH_DHCP_ANYCAST_ADDRESS << ": " << setting.dhcpAnycastAddress() << '\n';
0129 
0130     return dbg.maybeSpace();
0131 }