File indexing completed on 2024-04-21 05:01:41
0001 /* 0002 Smb4K's container class for information about a workgroup. 0003 0004 SPDX-FileCopyrightText: 2008-2023 Alexander Reinholdt <alexander.reinholdt@kdemail.net> 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 // application specific includes 0009 #include "smb4kworkgroup.h" 0010 #include "smb4kglobal.h" 0011 0012 // Qt includes 0013 #include <QAbstractSocket> 0014 #include <QUrl> 0015 0016 // KDE includes 0017 #include <KIconLoader> 0018 0019 using namespace Smb4KGlobal; 0020 0021 class Smb4KWorkgroupPrivate 0022 { 0023 public: 0024 QUrl masterURL; 0025 QHostAddress masterIP; 0026 }; 0027 0028 Smb4KWorkgroup::Smb4KWorkgroup(const QString &name) 0029 : Smb4KBasicNetworkItem(Workgroup) 0030 , d(new Smb4KWorkgroupPrivate) 0031 { 0032 // 0033 // Set the URL of the workgroup 0034 // 0035 pUrl->setScheme(QStringLiteral("smb")); 0036 pUrl->setHost(name); 0037 0038 // 0039 // Set the icon 0040 // 0041 *pIcon = KDE::icon(QStringLiteral("network-workgroup")); 0042 } 0043 0044 Smb4KWorkgroup::Smb4KWorkgroup(const Smb4KWorkgroup &workgroup) 0045 : Smb4KBasicNetworkItem(workgroup) 0046 , d(new Smb4KWorkgroupPrivate) 0047 { 0048 // Copy the private variables 0049 // 0050 *d = *workgroup.d; 0051 0052 // 0053 // Set the icon if necessary 0054 // 0055 if (pIcon->isNull()) { 0056 *pIcon = KDE::icon(QStringLiteral("network-workgroup")); 0057 } 0058 } 0059 0060 Smb4KWorkgroup::Smb4KWorkgroup() 0061 : Smb4KBasicNetworkItem(Workgroup) 0062 , d(new Smb4KWorkgroupPrivate) 0063 { 0064 // 0065 // Set the URL 0066 // 0067 pUrl->setScheme(QStringLiteral("smb")); 0068 0069 // 0070 // Set the icon 0071 // 0072 *pIcon = KDE::icon(QStringLiteral("network-workgroup")); 0073 } 0074 0075 Smb4KWorkgroup::~Smb4KWorkgroup() 0076 { 0077 } 0078 0079 void Smb4KWorkgroup::setWorkgroupName(const QString &name) 0080 { 0081 pUrl->setHost(name); 0082 pUrl->setScheme(QStringLiteral("smb")); 0083 } 0084 0085 QString Smb4KWorkgroup::workgroupName() const 0086 { 0087 return pUrl->host().toUpper(); 0088 } 0089 0090 void Smb4KWorkgroup::setMasterBrowserName(const QString &name) 0091 { 0092 d->masterURL.setHost(name); 0093 d->masterURL.setScheme(QStringLiteral("smb")); 0094 } 0095 0096 QString Smb4KWorkgroup::masterBrowserName() const 0097 { 0098 return d->masterURL.host().toUpper(); 0099 } 0100 0101 bool Smb4KWorkgroup::hasMasterBrowser() const 0102 { 0103 return !d->masterURL.host().isEmpty(); 0104 } 0105 0106 void Smb4KWorkgroup::setMasterBrowserIpAddress(const QString &ip) 0107 { 0108 d->masterIP.setAddress(ip); 0109 } 0110 0111 void Smb4KWorkgroup::setMasterBrowserIpAddress(const QHostAddress &address) 0112 { 0113 if (!address.isNull() && address.protocol() != QAbstractSocket::UnknownNetworkLayerProtocol) { 0114 d->masterIP = address; 0115 } 0116 } 0117 0118 QString Smb4KWorkgroup::masterBrowserIpAddress() const 0119 { 0120 return d->masterIP.toString(); 0121 } 0122 0123 bool Smb4KWorkgroup::hasMasterBrowserIpAddress() const 0124 { 0125 return !d->masterIP.isNull(); 0126 } 0127 0128 void Smb4KWorkgroup::update(Smb4KWorkgroup *workgroup) 0129 { 0130 if (QString::compare(workgroupName(), workgroup->workgroupName()) == 0) { 0131 setMasterBrowserName(workgroup->masterBrowserName()); 0132 setMasterBrowserIpAddress(workgroup->masterBrowserIpAddress()); 0133 } 0134 } 0135 0136 Smb4KWorkgroup &Smb4KWorkgroup::operator=(const Smb4KWorkgroup &other) 0137 { 0138 *d = *other.d; 0139 return *this; 0140 }