File indexing completed on 2023-09-24 04:08:38
0001 /* 0002 SPDX-FileCopyrightText: 2010 Rodrigo Belem <rclbelem@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 "ksambasharedata.h" 0008 #include "ksambasharedata_p.h" 0009 0010 #include "ksambashare.h" 0011 #include "ksambashare_p.h" 0012 0013 // TODO: add support for this samba options 0014 // usershare allow guests=P_BOOL,FLAG_ADVANCED 0015 // usershare max shares=P_INTEGER,FLAG_ADVANCED 0016 // usershare owner only=P_BOOL,FLAG_ADVANCED 0017 // usershare path=P_STRING,FLAG_ADVANCED 0018 // usershare prefix allow list=P_LIST,FLAG_ADVANCED 0019 // usershare prefix deny list=P_LIST,FLAG_ADVANCED 0020 // usershare template share=P_STRING,FLAG_ADVANCED 0021 0022 KSambaShareData::KSambaShareData() 0023 : dd(new KSambaShareDataPrivate) 0024 { 0025 } 0026 0027 KSambaShareData::KSambaShareData(const KSambaShareData &other) 0028 : dd(other.dd) 0029 { 0030 } 0031 0032 KSambaShareData::~KSambaShareData() 0033 { 0034 } 0035 0036 QString KSambaShareData::name() const 0037 { 0038 return dd->name; 0039 } 0040 0041 QString KSambaShareData::path() const 0042 { 0043 return dd->path; 0044 } 0045 0046 QString KSambaShareData::comment() const 0047 { 0048 return dd->comment; 0049 } 0050 0051 QString KSambaShareData::acl() const 0052 { 0053 return dd->acl; 0054 } 0055 0056 KSambaShareData::GuestPermission KSambaShareData::guestPermission() const 0057 { 0058 return (dd->guestPermission == QLatin1Char('n')) ? GuestsNotAllowed : GuestsAllowed; 0059 } 0060 0061 KSambaShareData::UserShareError KSambaShareData::setName(const QString &name) 0062 { 0063 if (!KSambaShare::instance()->d_func()->isShareNameValid(name)) { 0064 return UserShareNameInvalid; 0065 } 0066 0067 if (!KSambaShare::instance()->d_func()->isShareNameAvailable(name)) { 0068 return UserShareNameInUse; 0069 } 0070 0071 if (!dd->name.isEmpty()) { 0072 dd.detach(); 0073 } 0074 0075 dd->name = name; 0076 0077 return UserShareNameOk; 0078 } 0079 0080 KSambaShareData::UserShareError KSambaShareData::setPath(const QString &path) 0081 { 0082 UserShareError result = KSambaShare::instance()->d_func()->isPathValid(path); 0083 if (result == UserSharePathOk) { 0084 dd->path = path; 0085 } 0086 0087 return result; 0088 } 0089 0090 KSambaShareData::UserShareError KSambaShareData::setComment(const QString &comment) 0091 { 0092 dd->comment = comment; 0093 0094 return UserShareCommentOk; 0095 } 0096 0097 KSambaShareData::UserShareError KSambaShareData::setAcl(const QString &acl) 0098 { 0099 UserShareError result = KSambaShare::instance()->d_func()->isAclValid(acl); 0100 if (result == UserShareAclOk) { 0101 dd->acl = acl; 0102 } 0103 0104 return result; 0105 } 0106 0107 KSambaShareData::UserShareError KSambaShareData::setGuestPermission(const GuestPermission &permission) 0108 { 0109 UserShareError result = KSambaShare::instance()->d_func()->guestsAllowed(permission); 0110 if (result == UserShareGuestsOk) { 0111 dd->guestPermission = (permission == GuestsNotAllowed) ? QStringLiteral("n") : QStringLiteral("y"); 0112 } 0113 0114 return result; 0115 } 0116 0117 KSambaShareData::UserShareError KSambaShareData::save() 0118 { 0119 if (dd->name.isEmpty()) { 0120 return UserShareNameInvalid; 0121 } else if (dd->path.isEmpty()) { 0122 return UserSharePathInvalid; 0123 } else { 0124 return KSambaShare::instance()->d_func()->add(*this); 0125 } 0126 } 0127 0128 KSambaShareData::UserShareError KSambaShareData::remove() 0129 { 0130 if (dd->name.isEmpty()) { 0131 return UserShareNameInvalid; 0132 } else { 0133 return KSambaShare::instance()->d_func()->remove(*this); 0134 } 0135 } 0136 0137 KSambaShareData &KSambaShareData::operator=(const KSambaShareData &other) 0138 { 0139 if (&other != this) { 0140 dd = other.dd; 0141 } 0142 0143 return *this; 0144 } 0145 0146 bool KSambaShareData::operator==(const KSambaShareData &other) const 0147 { 0148 return other.dd == dd; 0149 } 0150 0151 bool KSambaShareData::operator!=(const KSambaShareData &other) const 0152 { 0153 return !(&other == this); 0154 }