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

0001 /*
0002     SPDX-FileCopyrightText: Pranav Gade <pranavgade20@gmail.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #include "matchsetting.h"
0008 #include "matchsetting_p.h"
0009 
0010 #include <QDebug>
0011 
0012 #if !NM_CHECK_VERSION(1, 14, 0)
0013 #define NM_SETTING_MATCH_SETTING_NAME "match"
0014 #define NM_SETTING_MATCH_INTERFACE_NAME "interface-name"
0015 #endif
0016 
0017 NetworkManager::MatchSettingPrivate::MatchSettingPrivate()
0018     : name(NM_SETTING_MATCH_SETTING_NAME)
0019 {
0020 }
0021 
0022 NetworkManager::MatchSetting::MatchSetting()
0023     : Setting(Setting::Match)
0024     , d_ptr(new MatchSettingPrivate())
0025 {
0026 }
0027 
0028 NetworkManager::MatchSetting::MatchSetting(const Ptr &other)
0029     : Setting(other)
0030     , d_ptr(new MatchSettingPrivate())
0031 {
0032     setInterfaceName(other->interfaceName());
0033 }
0034 
0035 NetworkManager::MatchSetting::~MatchSetting()
0036 {
0037     delete d_ptr;
0038 }
0039 
0040 QString NetworkManager::MatchSetting::name() const
0041 {
0042     Q_D(const MatchSetting);
0043 
0044     return d->name;
0045 }
0046 
0047 void NetworkManager::MatchSetting::setInterfaceName(const QStringList &name)
0048 {
0049     Q_D(MatchSetting);
0050 
0051     d->interfaceName = name;
0052 }
0053 
0054 QStringList NetworkManager::MatchSetting::interfaceName() const
0055 {
0056     Q_D(const MatchSetting);
0057 
0058     return d->interfaceName;
0059 }
0060 
0061 void NetworkManager::MatchSetting::fromMap(const QVariantMap &setting)
0062 {
0063     if (setting.contains(QLatin1String(NM_SETTING_MATCH_INTERFACE_NAME))) {
0064         setInterfaceName(setting.value(QLatin1String(NM_SETTING_MATCH_INTERFACE_NAME)).toStringList());
0065     }
0066 }
0067 
0068 QVariantMap NetworkManager::MatchSetting::toMap() const
0069 {
0070     QVariantMap setting;
0071 
0072     if (!interfaceName().isEmpty()) {
0073         setting.insert(QLatin1String(NM_SETTING_MATCH_INTERFACE_NAME), interfaceName());
0074     }
0075 
0076     return setting;
0077 }
0078 
0079 QDebug NetworkManager::operator<<(QDebug dbg, const NetworkManager::MatchSetting &setting)
0080 {
0081     dbg.nospace() << "type: " << setting.typeAsString(setting.type()) << '\n';
0082     dbg.nospace() << "initialized: " << !setting.isNull() << '\n';
0083 
0084     dbg.nospace() << NM_SETTING_MATCH_INTERFACE_NAME << ": " << setting.interfaceName() << '\n';
0085 
0086     return dbg.maybeSpace();
0087 }