File indexing completed on 2024-04-21 05:01:41

0001 /*
0002     This class derives from QObject and encapsulates a bookmark item. It
0003     is for use with QtQuick.
0004 
0005     SPDX-FileCopyrightText: 2013-2022 Alexander Reinholdt <alexander.reinholdt@kdemail.net>
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 // application specific includes
0010 #include "smb4kbookmarkobject.h"
0011 
0012 // Qt includes
0013 #include <QHostAddress>
0014 
0015 // KDE includes
0016 #include <KIconLoader>
0017 
0018 class Smb4KBookmarkObjectPrivate
0019 {
0020 public:
0021     QString workgroup;
0022     QUrl url;
0023     QString label;
0024     QString category;
0025     QString login;
0026     bool isCategory;
0027     bool isMounted;
0028     QHostAddress hostIp;
0029 };
0030 
0031 Smb4KBookmarkObject::Smb4KBookmarkObject(Smb4KBookmark *bookmark, QObject *parent)
0032     : QObject(parent)
0033     , d(new Smb4KBookmarkObjectPrivate)
0034 {
0035     d->workgroup = bookmark->workgroupName();
0036     d->url = bookmark->url();
0037     d->label = bookmark->label();
0038     d->category = bookmark->categoryName();
0039     d->login = bookmark->userName();
0040     d->isCategory = false;
0041     d->isMounted = false;
0042     d->hostIp.setAddress(bookmark->hostIpAddress());
0043 }
0044 
0045 Smb4KBookmarkObject::Smb4KBookmarkObject(const QString &categoryName, QObject *parent)
0046     : QObject(parent)
0047     , d(new Smb4KBookmarkObjectPrivate)
0048 {
0049     d->category = categoryName;
0050     d->isCategory = true;
0051     d->isMounted = false;
0052 }
0053 
0054 Smb4KBookmarkObject::Smb4KBookmarkObject(QObject *parent)
0055     : QObject(parent)
0056     , d(new Smb4KBookmarkObjectPrivate)
0057 {
0058     d->isCategory = false;
0059     d->isMounted = false;
0060 }
0061 
0062 Smb4KBookmarkObject::~Smb4KBookmarkObject()
0063 {
0064 }
0065 
0066 QString Smb4KBookmarkObject::workgroupName() const
0067 {
0068     return d->workgroup;
0069 }
0070 
0071 void Smb4KBookmarkObject::setWorkgroupName(const QString &name)
0072 {
0073     if (d->workgroup != name) {
0074         d->workgroup = name;
0075         Q_EMIT changed();
0076     }
0077 }
0078 
0079 QString Smb4KBookmarkObject::hostName() const
0080 {
0081     return d->url.host().toUpper();
0082 }
0083 
0084 QString Smb4KBookmarkObject::shareName() const
0085 {
0086     return d->url.path().remove(QStringLiteral("/"));
0087 }
0088 
0089 QString Smb4KBookmarkObject::label() const
0090 {
0091     return d->label;
0092 }
0093 
0094 void Smb4KBookmarkObject::setLabel(const QString &label)
0095 {
0096     if (d->label != label) {
0097         d->label = label;
0098         Q_EMIT changed();
0099     }
0100 }
0101 
0102 QUrl Smb4KBookmarkObject::url() const
0103 {
0104     return d->url;
0105 }
0106 
0107 void Smb4KBookmarkObject::setUrl(const QUrl &url)
0108 {
0109     if (!d->url.matches(url, QUrl::None)) {
0110         d->url = url;
0111         Q_EMIT changed();
0112     }
0113 }
0114 
0115 QString Smb4KBookmarkObject::categoryName() const
0116 {
0117     return d->category;
0118 }
0119 
0120 void Smb4KBookmarkObject::setCategoryName(const QString &name)
0121 {
0122     if (d->category != name) {
0123         d->category = name;
0124         Q_EMIT changed();
0125     }
0126 }
0127 
0128 bool Smb4KBookmarkObject::isCategory() const
0129 {
0130     return d->isCategory;
0131 }
0132 
0133 void Smb4KBookmarkObject::setCategory(bool category)
0134 {
0135     if (d->isCategory != category) {
0136         d->isCategory = category;
0137         Q_EMIT changed();
0138     }
0139 }
0140 
0141 bool Smb4KBookmarkObject::isMounted() const
0142 {
0143     return d->isMounted;
0144 }
0145 
0146 void Smb4KBookmarkObject::setMounted(bool mounted)
0147 {
0148     if (d->isMounted != mounted) {
0149         d->isMounted = mounted;
0150         Q_EMIT changed();
0151     }
0152 }
0153 
0154 QString Smb4KBookmarkObject::userName() const
0155 {
0156     return d->login;
0157 }
0158 
0159 void Smb4KBookmarkObject::setUserName(const QString &name)
0160 {
0161     if (d->login != name) {
0162         d->login = name;
0163         Q_EMIT changed();
0164     }
0165 }
0166 
0167 QString Smb4KBookmarkObject::hostIpAddress() const
0168 {
0169     return d->hostIp.toString();
0170 }
0171 
0172 void Smb4KBookmarkObject::setHostIpAddress(const QString &ip)
0173 {
0174     if (d->hostIp.toString() != ip) {
0175         d->hostIp.setAddress(ip);
0176         Q_EMIT changed();
0177     }
0178 }