File indexing completed on 2024-11-10 04:40:41

0001 /*
0002     SPDX-FileCopyrightText: 2008 Kevin Krammer <kevin.krammer@gmx.at>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "itemfetchscope.h"
0008 
0009 #include "itemfetchscope_p.h"
0010 
0011 using namespace Akonadi;
0012 
0013 ItemFetchScope::ItemFetchScope()
0014     : d(new ItemFetchScopePrivate())
0015 {
0016 }
0017 
0018 ItemFetchScope::ItemFetchScope(const ItemFetchScope &other)
0019     : d(other.d)
0020 {
0021 }
0022 
0023 ItemFetchScope::~ItemFetchScope()
0024 {
0025 }
0026 
0027 ItemFetchScope &ItemFetchScope::operator=(const ItemFetchScope &other)
0028 {
0029     if (&other != this) {
0030         d = other.d;
0031     }
0032 
0033     return *this;
0034 }
0035 
0036 QSet<QByteArray> ItemFetchScope::payloadParts() const
0037 {
0038     return d->mPayloadParts;
0039 }
0040 
0041 void ItemFetchScope::fetchPayloadPart(const QByteArray &part, bool fetch)
0042 {
0043     if (fetch) {
0044         d->mPayloadParts.insert(part);
0045     } else {
0046         d->mPayloadParts.remove(part);
0047     }
0048 }
0049 
0050 bool ItemFetchScope::fullPayload() const
0051 {
0052     return d->mFullPayload;
0053 }
0054 
0055 void ItemFetchScope::fetchFullPayload(bool fetch)
0056 {
0057     d->mFullPayload = fetch;
0058 }
0059 
0060 QSet<QByteArray> ItemFetchScope::attributes() const
0061 {
0062     return d->mAttributes;
0063 }
0064 
0065 void ItemFetchScope::fetchAttribute(const QByteArray &type, bool fetch)
0066 {
0067     if (fetch) {
0068         d->mAttributes.insert(type);
0069     } else {
0070         d->mAttributes.remove(type);
0071     }
0072 }
0073 
0074 bool ItemFetchScope::allAttributes() const
0075 {
0076     return d->mAllAttributes;
0077 }
0078 
0079 void ItemFetchScope::fetchAllAttributes(bool fetch)
0080 {
0081     d->mAllAttributes = fetch;
0082 }
0083 
0084 bool ItemFetchScope::isEmpty() const
0085 {
0086     return d->mPayloadParts.isEmpty() && d->mAttributes.isEmpty() && !d->mFullPayload && !d->mAllAttributes && !d->mCacheOnly
0087         && !d->mCheckCachedPayloadPartsOnly && d->mFetchMtime // true by default -> false = non-empty
0088         && !d->mIgnoreRetrievalErrors && d->mFetchRid // true by default
0089         && !d->mFetchGid && !d->mFetchTags && !d->mFetchVRefs && !d->mFetchRelations && d->mAncestorDepth == AncestorRetrieval::None;
0090 }
0091 
0092 bool ItemFetchScope::cacheOnly() const
0093 {
0094     return d->mCacheOnly;
0095 }
0096 
0097 void ItemFetchScope::setCacheOnly(bool cacheOnly)
0098 {
0099     d->mCacheOnly = cacheOnly;
0100 }
0101 
0102 void ItemFetchScope::setCheckForCachedPayloadPartsOnly(bool check)
0103 {
0104     if (check) {
0105         setCacheOnly(true);
0106     }
0107     d->mCheckCachedPayloadPartsOnly = check;
0108 }
0109 
0110 bool ItemFetchScope::checkForCachedPayloadPartsOnly() const
0111 {
0112     return d->mCheckCachedPayloadPartsOnly;
0113 }
0114 
0115 ItemFetchScope::AncestorRetrieval ItemFetchScope::ancestorRetrieval() const
0116 {
0117     return d->mAncestorDepth;
0118 }
0119 
0120 void ItemFetchScope::setAncestorRetrieval(AncestorRetrieval depth)
0121 {
0122     d->mAncestorDepth = depth;
0123 }
0124 
0125 void ItemFetchScope::setFetchModificationTime(bool retrieveMtime)
0126 {
0127     d->mFetchMtime = retrieveMtime;
0128 }
0129 
0130 bool ItemFetchScope::fetchModificationTime() const
0131 {
0132     return d->mFetchMtime;
0133 }
0134 
0135 void ItemFetchScope::setFetchGid(bool retrieveGid)
0136 {
0137     d->mFetchGid = retrieveGid;
0138 }
0139 
0140 bool ItemFetchScope::fetchGid() const
0141 {
0142     return d->mFetchGid;
0143 }
0144 
0145 void ItemFetchScope::setIgnoreRetrievalErrors(bool ignore)
0146 {
0147     d->mIgnoreRetrievalErrors = ignore;
0148 }
0149 
0150 bool ItemFetchScope::ignoreRetrievalErrors() const
0151 {
0152     return d->mIgnoreRetrievalErrors;
0153 }
0154 
0155 void ItemFetchScope::setFetchChangedSince(const QDateTime &changedSince)
0156 {
0157     d->mChangedSince = changedSince;
0158 }
0159 
0160 QDateTime ItemFetchScope::fetchChangedSince() const
0161 {
0162     return d->mChangedSince;
0163 }
0164 
0165 void ItemFetchScope::setFetchRemoteIdentification(bool retrieveRid)
0166 {
0167     d->mFetchRid = retrieveRid;
0168 }
0169 
0170 bool ItemFetchScope::fetchRemoteIdentification() const
0171 {
0172     return d->mFetchRid;
0173 }
0174 
0175 void ItemFetchScope::setFetchTags(bool fetchTags)
0176 {
0177     d->mFetchTags = fetchTags;
0178 }
0179 
0180 bool ItemFetchScope::fetchTags() const
0181 {
0182     return d->mFetchTags;
0183 }
0184 
0185 void ItemFetchScope::setTagFetchScope(const TagFetchScope &tagFetchScope)
0186 {
0187     d->mTagFetchScope = tagFetchScope;
0188 }
0189 
0190 TagFetchScope &ItemFetchScope::tagFetchScope()
0191 {
0192     return d->mTagFetchScope;
0193 }
0194 
0195 TagFetchScope ItemFetchScope::tagFetchScope() const
0196 {
0197     return d->mTagFetchScope;
0198 }
0199 
0200 void ItemFetchScope::setFetchVirtualReferences(bool fetchVRefs)
0201 {
0202     d->mFetchVRefs = fetchVRefs;
0203 }
0204 
0205 bool ItemFetchScope::fetchVirtualReferences() const
0206 {
0207     return d->mFetchVRefs;
0208 }
0209 
0210 void ItemFetchScope::setFetchRelations(bool fetchRelations)
0211 {
0212     d->mFetchRelations = fetchRelations;
0213 }
0214 
0215 bool ItemFetchScope::fetchRelations() const
0216 {
0217     return d->mFetchRelations;
0218 }