File indexing completed on 2025-02-16 13:01:48
0001 /* 0002 This file is part of the KContacts framework. 0003 SPDX-FileCopyrightText: 2015-2019 Laurent Montel <montel@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "lang.h" 0009 #include "parametermap_p.h" 0010 0011 #include <QDataStream> 0012 #include <QStringList> 0013 0014 using namespace KContacts; 0015 0016 class Q_DECL_HIDDEN Lang::Private : public QSharedData 0017 { 0018 public: 0019 Private() 0020 { 0021 } 0022 0023 Private(const Private &other) 0024 : QSharedData(other) 0025 { 0026 mParamMap = other.mParamMap; 0027 language = other.language; 0028 } 0029 0030 ParameterMap mParamMap; 0031 QString language; 0032 }; 0033 0034 Lang::Lang() 0035 : d(new Private) 0036 { 0037 } 0038 0039 Lang::Lang(const Lang &other) 0040 : d(other.d) 0041 { 0042 } 0043 0044 Lang::Lang(const QString &language) 0045 : d(new Private) 0046 { 0047 d->language = language; 0048 } 0049 0050 Lang::~Lang() 0051 { 0052 } 0053 0054 void Lang::setLanguage(const QString &lang) 0055 { 0056 d->language = lang; 0057 } 0058 0059 QString Lang::language() const 0060 { 0061 return d->language; 0062 } 0063 0064 bool Lang::isValid() const 0065 { 0066 return !d->language.isEmpty(); 0067 } 0068 0069 #if KCONTACTS_BUILD_DEPRECATED_SINCE(5, 88) 0070 void Lang::setParameters(const QMap<QString, QStringList> ¶ms) 0071 { 0072 d->mParamMap = ParameterMap::fromQMap(params); 0073 } 0074 #endif 0075 0076 #if KCONTACTS_BUILD_DEPRECATED_SINCE(5, 88) 0077 QMap<QString, QStringList> Lang::parameters() const 0078 { 0079 return d->mParamMap.toQMap(); 0080 } 0081 #endif 0082 0083 void Lang::setParams(const ParameterMap ¶ms) 0084 { 0085 d->mParamMap = params; 0086 } 0087 0088 ParameterMap Lang::params() const 0089 { 0090 return d->mParamMap; 0091 } 0092 0093 bool Lang::operator==(const Lang &other) const 0094 { 0095 return (d->mParamMap == other.d->mParamMap) && (d->language == other.language()); 0096 } 0097 0098 bool Lang::operator!=(const Lang &other) const 0099 { 0100 return !(other == *this); 0101 } 0102 0103 Lang &Lang::operator=(const Lang &other) 0104 { 0105 if (this != &other) { 0106 d = other.d; 0107 } 0108 0109 return *this; 0110 } 0111 0112 QString Lang::toString() const 0113 { 0114 QString str = QLatin1String("Lang {\n"); 0115 str += QStringLiteral(" language: %1\n").arg(d->language); 0116 str += d->mParamMap.toString(); 0117 str += QLatin1String("}\n"); 0118 return str; 0119 } 0120 0121 QDataStream &KContacts::operator<<(QDataStream &s, const Lang &lang) 0122 { 0123 return s << lang.d->mParamMap << lang.d->language; 0124 } 0125 0126 QDataStream &KContacts::operator>>(QDataStream &s, Lang &lang) 0127 { 0128 s >> lang.d->mParamMap >> lang.d->language; 0129 return s; 0130 }