File indexing completed on 2024-04-14 05:43:24

0001 /*
0002     SPDX-FileCopyrightText: 2008, 2009, 2012 Rolf Eike Beer <kde@opensource.sf-tec.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 #include "KGpgNode.h"
0007 
0008 #include "KGpgGroupMemberNode.h"
0009 #include "KGpgGroupNode.h"
0010 #include "KGpgOrphanNode.h"
0011 #include "KGpgRootNode.h"
0012 #include "KGpgSubkeyNode.h"
0013 #include "KGpgUatNode.h"
0014 #include "KGpgUidNode.h"
0015 #include "model/kgpgitemmodel.h"
0016 
0017 #include <KLocalizedString>
0018 
0019 KGpgNode::KGpgNode(KGpgExpandableNode *parent)
0020     : QObject(), m_parent(parent)
0021 {
0022     if (parent == nullptr)
0023         m_model = nullptr;
0024     else
0025         m_model = parent->m_model;
0026 }
0027 
0028 KGpgNode::~KGpgNode()
0029 {
0030     Q_ASSERT(m_model);
0031     m_model->invalidateIndexes(this);
0032 
0033     if (m_parent != nullptr)
0034         m_parent->deleteChild(this);
0035 }
0036 
0037 QString
0038 KGpgNode::getNameComment() const
0039 {
0040     if (getComment().isEmpty())
0041         return getName();
0042     else
0043         return i18nc("Name of uid (comment)", "%1 (%2)", getName(), getComment());
0044 }
0045 
0046 KGpgExpandableNode *
0047 KGpgNode::toExpandableNode()
0048 {
0049     Q_ASSERT(((getType() & KgpgCore::ITYPE_GROUP) && !(getType() & KgpgCore::ITYPE_PAIR)) ||
0050             (getType() & (KgpgCore::ITYPE_PAIR | KgpgCore::ITYPE_SUB | KgpgCore::ITYPE_UID | KgpgCore::ITYPE_UAT)));
0051 
0052     return qobject_cast<KGpgExpandableNode *>(this);
0053 }
0054 
0055 const KGpgExpandableNode *
0056 KGpgNode::toExpandableNode() const
0057 {
0058     Q_ASSERT(((getType() & KgpgCore::ITYPE_GROUP) && !(getType() & KgpgCore::ITYPE_PAIR)) ||
0059     (getType() & (KgpgCore::ITYPE_PAIR | KgpgCore::ITYPE_SUB | KgpgCore::ITYPE_UID | KgpgCore::ITYPE_UAT)));
0060 
0061     return qobject_cast<const KGpgExpandableNode *>(this);
0062 }
0063 
0064 KGpgSignableNode *
0065 KGpgNode::toSignableNode()
0066 {
0067     Q_ASSERT(getType() & (KgpgCore::ITYPE_PAIR | KgpgCore::ITYPE_SUB | KgpgCore::ITYPE_UID | KgpgCore::ITYPE_UAT));
0068     
0069     return qobject_cast<KGpgSignableNode *>(this);
0070 }
0071 
0072 const KGpgSignableNode *
0073 KGpgNode::toSignableNode() const
0074 {
0075     Q_ASSERT(getType() & (KgpgCore::ITYPE_PAIR | KgpgCore::ITYPE_SUB | KgpgCore::ITYPE_UID | KgpgCore::ITYPE_UAT));
0076     
0077     return qobject_cast<const KGpgSignableNode *>(this);
0078 }
0079 
0080 KGpgKeyNode *
0081 KGpgNode::toKeyNode()
0082 {
0083     Q_ASSERT(getType() & KgpgCore::ITYPE_PAIR);
0084     Q_ASSERT(!(getType() & KgpgCore::ITYPE_GROUP));
0085 
0086     return qobject_cast<KGpgKeyNode *>(this);
0087 }
0088 
0089 const KGpgKeyNode *
0090 KGpgNode::toKeyNode() const
0091 {
0092     Q_ASSERT(getType() & KgpgCore::ITYPE_PAIR);
0093     Q_ASSERT(!(getType() & KgpgCore::ITYPE_GROUP));
0094 
0095     return qobject_cast<const KGpgKeyNode *>(this);
0096 }
0097 
0098 KGpgRootNode *
0099 KGpgNode::toRootNode()
0100 {
0101     Q_ASSERT((m_parent == nullptr) && (getType() == 0));
0102 
0103     return static_cast<KGpgRootNode *>(this);
0104 }
0105 
0106 const KGpgRootNode *
0107 KGpgNode::toRootNode() const
0108 {
0109     Q_ASSERT((m_parent == nullptr) && (getType() == 0));
0110 
0111     return static_cast<const KGpgRootNode *>(this);
0112 }
0113 
0114 KGpgUidNode *
0115 KGpgNode::toUidNode()
0116 {
0117     Q_ASSERT(getType() == KgpgCore::ITYPE_UID);
0118 
0119     return static_cast<KGpgUidNode *>(this);
0120 }
0121 
0122 const KGpgUidNode *
0123 KGpgNode::toUidNode() const
0124 {
0125     Q_ASSERT(getType() == KgpgCore::ITYPE_UID);
0126 
0127     return static_cast<const KGpgUidNode *>(this);
0128 }
0129 
0130 KGpgSubkeyNode *
0131 KGpgNode::toSubkeyNode()
0132 {
0133     Q_ASSERT(getType() == KgpgCore::ITYPE_SUB);
0134 
0135     return static_cast<KGpgSubkeyNode *>(this);
0136 }
0137 
0138 const KGpgSubkeyNode *
0139 KGpgNode::toSubkeyNode() const
0140 {
0141     Q_ASSERT(getType() == KgpgCore::ITYPE_SUB);
0142 
0143     return static_cast<const KGpgSubkeyNode *>(this);
0144 }
0145 
0146 KGpgUatNode *
0147 KGpgNode::toUatNode()
0148 {
0149     Q_ASSERT(getType() == KgpgCore::ITYPE_UAT);
0150 
0151     return static_cast<KGpgUatNode *>(this);
0152 }
0153 
0154 const KGpgUatNode *
0155 KGpgNode::toUatNode() const
0156 {
0157     Q_ASSERT(getType() == KgpgCore::ITYPE_UAT);
0158 
0159     return static_cast<const KGpgUatNode *>(this);
0160 }
0161 
0162 KGpgGroupNode *
0163 KGpgNode::toGroupNode()
0164 {
0165     Q_ASSERT(getType() == KgpgCore::ITYPE_GROUP);
0166 
0167     return static_cast<KGpgGroupNode *>(this);
0168 }
0169 
0170 const KGpgGroupNode *
0171 KGpgNode::toGroupNode() const
0172 {
0173     Q_ASSERT(getType() == KgpgCore::ITYPE_GROUP);
0174 
0175     return static_cast<const KGpgGroupNode *>(this);
0176 }
0177 
0178 KGpgRefNode *
0179 KGpgNode::toRefNode()
0180 {
0181     Q_ASSERT(((getType() & KgpgCore::ITYPE_GROUP) && (getType() & KgpgCore::ITYPE_PAIR)) || (getType() & KgpgCore::ITYPE_SIGN));
0182 
0183     return qobject_cast<KGpgRefNode *>(this);
0184 }
0185 
0186 const KGpgRefNode *
0187 KGpgNode::toRefNode() const
0188 {
0189     Q_ASSERT(((getType() & KgpgCore::ITYPE_GROUP) && (getType() & KgpgCore::ITYPE_PAIR)) || (getType() & KgpgCore::ITYPE_SIGN));
0190 
0191     return qobject_cast<const KGpgRefNode *>(this);
0192 }
0193 
0194 KGpgGroupMemberNode *
0195 KGpgNode::toGroupMemberNode()
0196 {
0197     Q_ASSERT((getType() & KgpgCore::ITYPE_GROUP) && (getType() & KgpgCore::ITYPE_PAIR));
0198 
0199     return static_cast<KGpgGroupMemberNode *>(this);
0200 }
0201 
0202 const KGpgGroupMemberNode *
0203 KGpgNode::toGroupMemberNode() const
0204 {
0205     Q_ASSERT((getType() & KgpgCore::ITYPE_GROUP) && (getType() & KgpgCore::ITYPE_PAIR));
0206 
0207     return static_cast<const KGpgGroupMemberNode *>(this);
0208 }
0209 
0210 KGpgSignNode *
0211 KGpgNode::toSignNode()
0212 {
0213     Q_ASSERT(getType() == KgpgCore::ITYPE_SIGN);
0214 
0215     return static_cast<KGpgSignNode *>(this);
0216 }
0217 
0218 const KGpgSignNode *
0219 KGpgNode::toSignNode() const
0220 {
0221     Q_ASSERT(getType() == KgpgCore::ITYPE_SIGN);
0222 
0223     return static_cast<const KGpgSignNode *>(this);
0224 }
0225 
0226 KGpgOrphanNode *
0227 KGpgNode::toOrphanNode()
0228 {
0229     Q_ASSERT(getType() == KgpgCore::ITYPE_SECRET);
0230 
0231     return static_cast<KGpgOrphanNode *>(this);
0232 }
0233 
0234 const KGpgOrphanNode *
0235 KGpgNode::toOrphanNode() const
0236 {
0237     Q_ASSERT(getType() == KgpgCore::ITYPE_SECRET);
0238 
0239     return static_cast<const KGpgOrphanNode *>(this);
0240 }
0241 
0242 bool
0243 KGpgNode::hasChildren() const
0244 {
0245     return false;
0246 }
0247 
0248 int
0249 KGpgNode::getChildCount()
0250 {
0251     return 0;
0252 }
0253 
0254 KGpgNode *
0255 KGpgNode::getChild(const int index) const
0256 {
0257     Q_UNUSED(index);
0258     return nullptr;
0259 }
0260 
0261 int
0262 KGpgNode::getChildIndex(KGpgNode *node) const
0263 {
0264     Q_UNUSED(node);
0265     return 0;
0266 }
0267 
0268 KgpgCore::KgpgKeyTrust
0269 KGpgNode::getTrust() const
0270 {
0271     return TRUST_NOKEY;
0272 }
0273 
0274 QString
0275 KGpgNode::getSize() const
0276 {
0277     return QString();
0278 }
0279 
0280 QString
0281 KGpgNode::getName() const
0282 {
0283     return QString();
0284 }
0285 
0286 QString
0287 KGpgNode::getEmail() const
0288 {
0289     return QString();
0290 }
0291 
0292 QDateTime
0293 KGpgNode::getExpiration() const
0294 {
0295     return QDateTime();
0296 }
0297 
0298 QDateTime
0299 KGpgNode::getCreation() const
0300 {
0301     return QDateTime();
0302 }
0303 
0304 QString
0305 KGpgNode::getId() const
0306 {
0307     return QString();
0308 }
0309 
0310 QString
0311 KGpgNode::getComment() const
0312 {
0313     return QString();
0314 }
0315 
0316 KGpgExpandableNode *
0317 KGpgNode::getParentKeyNode() const
0318 {
0319     return m_parent;
0320 }