Warning, file /frameworks/modemmanager-qt/src/sms.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2013 Anant Kamath <kamathanant@gmail.com> 0003 SPDX-FileCopyrightText: 2013 Lukas Tinkl <ltinkl@redhat.com> 0004 SPDX-FileCopyrightText: 2013-2015 Jan Grulich <jgrulich@redhat.com> 0005 0006 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0007 */ 0008 0009 #include "sms.h" 0010 #include "mmdebug_p.h" 0011 #include "sms_p.h" 0012 0013 #ifdef MMQT_STATIC 0014 #include "dbus/fakedbus.h" 0015 #else 0016 #include "dbus/dbus.h" 0017 #endif 0018 0019 #include <ModemManager/ModemManager.h> 0020 0021 ModemManager::SmsPrivate::SmsPrivate(const QString &path, Sms *q) 0022 #ifdef MMQT_STATIC 0023 : smsIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::sessionBus()) 0024 #else 0025 : smsIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::systemBus()) 0026 #endif 0027 , q_ptr(q) 0028 { 0029 if (smsIface.isValid()) { 0030 uni = path; 0031 state = (MMSmsState)smsIface.state(); 0032 pduType = (MMSmsPduType)smsIface.pduType(); 0033 number = smsIface.number(); 0034 text = smsIface.text(); 0035 smsc = smsIface.SMSC(); 0036 data = smsIface.data(); 0037 validity = smsIface.validity(); 0038 smsClass = smsIface.smsClass(); 0039 deliveryReportRequest = smsIface.deliveryReportRequest(); 0040 messageReference = smsIface.messageReference(); 0041 timestamp = QDateTime::fromString(smsIface.timestamp(), Qt::ISODateWithMs); 0042 dischargeTimestamp = QDateTime::fromString(smsIface.dischargeTimestamp(), Qt::ISODateWithMs); 0043 deliveryState = (MMSmsDeliveryState)smsIface.deliveryState(); 0044 storage = (MMSmsStorage)smsIface.storage(); 0045 #if MM_CHECK_VERSION(1, 2, 0) 0046 serviceCategory = (MMSmsCdmaServiceCategory)smsIface.serviceCategory(); 0047 teleserviceId = (MMSmsCdmaTeleserviceId)smsIface.teleserviceId(); 0048 #endif 0049 } 0050 } 0051 0052 ModemManager::Sms::Sms(const QString &path, QObject *parent) 0053 : QObject(parent) 0054 , d_ptr(new SmsPrivate(path, this)) 0055 { 0056 Q_D(Sms); 0057 0058 qRegisterMetaType<MMSmsDeliveryState>(); 0059 qRegisterMetaType<MMSmsPduType>(); 0060 qRegisterMetaType<MMSmsState>(); 0061 qRegisterMetaType<MMSmsStorage>(); 0062 #if MM_CHECK_VERSION(1, 2, 0) 0063 qRegisterMetaType<MMSmsCdmaServiceCategory>(); 0064 qRegisterMetaType<MMSmsCdmaTeleserviceId>(); 0065 #endif 0066 0067 #ifdef MMQT_STATIC 0068 QDBusConnection::sessionBus().connect(QLatin1String(MMQT_DBUS_SERVICE), 0069 path, 0070 QLatin1String(DBUS_INTERFACE_PROPS), 0071 QStringLiteral("PropertiesChanged"), 0072 d, 0073 SLOT(onPropertiesChanged(QString, QVariantMap, QStringList))); 0074 #else 0075 QDBusConnection::systemBus().connect(QLatin1String(MMQT_DBUS_SERVICE), 0076 path, 0077 QLatin1String(DBUS_INTERFACE_PROPS), 0078 QStringLiteral("PropertiesChanged"), 0079 d, 0080 SLOT(onPropertiesChanged(QString, QVariantMap, QStringList))); 0081 #endif 0082 } 0083 0084 ModemManager::Sms::~Sms() 0085 { 0086 delete d_ptr; 0087 } 0088 0089 QString ModemManager::Sms::uni() const 0090 { 0091 Q_D(const Sms); 0092 return d->uni; 0093 } 0094 0095 QDBusPendingReply<> ModemManager::Sms::send() 0096 { 0097 Q_D(Sms); 0098 return d->smsIface.Send(); 0099 } 0100 0101 QDBusPendingReply<> ModemManager::Sms::store(MMSmsStorage storage) 0102 { 0103 Q_D(Sms); 0104 return d->smsIface.Store(storage); 0105 } 0106 0107 MMSmsState ModemManager::Sms::state() const 0108 { 0109 Q_D(const Sms); 0110 return d->state; 0111 } 0112 0113 MMSmsPduType ModemManager::Sms::pduType() const 0114 { 0115 Q_D(const Sms); 0116 return d->pduType; 0117 } 0118 0119 QString ModemManager::Sms::number() const 0120 { 0121 Q_D(const Sms); 0122 return d->number; 0123 } 0124 0125 QString ModemManager::Sms::text() const 0126 { 0127 Q_D(const Sms); 0128 return d->text; 0129 } 0130 0131 QString ModemManager::Sms::SMSC() const 0132 { 0133 Q_D(const Sms); 0134 return d->smsc; 0135 } 0136 0137 QByteArray ModemManager::Sms::data() const 0138 { 0139 Q_D(const Sms); 0140 return d->data; 0141 } 0142 0143 ModemManager::ValidityPair ModemManager::Sms::validity() const 0144 { 0145 Q_D(const Sms); 0146 return d->validity; 0147 } 0148 0149 int ModemManager::Sms::smsClass() const 0150 { 0151 Q_D(const Sms); 0152 return d->smsClass; 0153 } 0154 0155 bool ModemManager::Sms::deliveryReportRequest() const 0156 { 0157 Q_D(const Sms); 0158 return d->deliveryReportRequest; 0159 } 0160 0161 uint ModemManager::Sms::messageReference() const 0162 { 0163 Q_D(const Sms); 0164 return d->messageReference; 0165 } 0166 0167 QDateTime ModemManager::Sms::timestamp() const 0168 { 0169 Q_D(const Sms); 0170 return d->timestamp; 0171 } 0172 0173 QDateTime ModemManager::Sms::dischargeTimestamp() const 0174 { 0175 Q_D(const Sms); 0176 return d->dischargeTimestamp; 0177 } 0178 0179 MMSmsDeliveryState ModemManager::Sms::deliveryState() const 0180 { 0181 Q_D(const Sms); 0182 return d->deliveryState; 0183 } 0184 0185 MMSmsStorage ModemManager::Sms::storage() const 0186 { 0187 Q_D(const Sms); 0188 return d->storage; 0189 } 0190 #if MM_CHECK_VERSION(1, 2, 0) 0191 MMSmsCdmaServiceCategory ModemManager::Sms::serviceCategory() const 0192 { 0193 Q_D(const Sms); 0194 return d->serviceCategory; 0195 } 0196 0197 MMSmsCdmaTeleserviceId ModemManager::Sms::teleserviceId() const 0198 { 0199 Q_D(const Sms); 0200 return d->teleserviceId; 0201 } 0202 #endif 0203 0204 void ModemManager::Sms::setTimeout(int timeout) 0205 { 0206 Q_D(Sms); 0207 d->smsIface.setTimeout(timeout); 0208 } 0209 0210 int ModemManager::Sms::timeout() const 0211 { 0212 Q_D(const Sms); 0213 return d->smsIface.timeout(); 0214 } 0215 0216 void ModemManager::SmsPrivate::onPropertiesChanged(const QString &interfaceName, const QVariantMap &changedProperties, const QStringList &invalidatedProperties) 0217 { 0218 Q_UNUSED(invalidatedProperties); 0219 Q_Q(Sms); 0220 0221 if (interfaceName == QLatin1String(MMQT_DBUS_INTERFACE_SMS)) { 0222 QVariantMap::const_iterator it = changedProperties.constFind(QLatin1String(MM_SMS_PROPERTY_STATE)); 0223 if (it != changedProperties.constEnd()) { 0224 state = (MMSmsState)it->toUInt(); 0225 qCDebug(MMQT) << state; 0226 Q_EMIT q->stateChanged(state); 0227 } 0228 it = changedProperties.constFind(QLatin1String(MM_SMS_PROPERTY_PDUTYPE)); 0229 if (it != changedProperties.constEnd()) { 0230 pduType = (MMSmsPduType)it->toUInt(); 0231 Q_EMIT q->pduTypeChanged(pduType); 0232 } 0233 it = changedProperties.constFind(QLatin1String(MM_SMS_PROPERTY_NUMBER)); 0234 if (it != changedProperties.constEnd()) { 0235 number = it->toString(); 0236 Q_EMIT q->numberChanged(number); 0237 } 0238 it = changedProperties.constFind(QLatin1String(MM_SMS_PROPERTY_SMSC)); 0239 if (it != changedProperties.constEnd()) { 0240 smsc = it->toString(); 0241 Q_EMIT q->SMSCChanged(smsc); 0242 } 0243 it = changedProperties.constFind(QLatin1String(MM_SMS_PROPERTY_DATA)); 0244 if (it != changedProperties.constEnd()) { 0245 data = it->toByteArray(); 0246 Q_EMIT q->dataChanged(data); 0247 } 0248 it = changedProperties.constFind(QLatin1String(MM_SMS_PROPERTY_TEXT)); 0249 if (it != changedProperties.constEnd()) { 0250 text = it->toString(); 0251 Q_EMIT q->textChanged(text); 0252 } 0253 it = changedProperties.constFind(QLatin1String(MM_SMS_PROPERTY_VALIDITY)); 0254 if (it != changedProperties.constEnd()) { 0255 validity = it->value<ValidityPair>(); 0256 Q_EMIT q->validityChanged(validity); 0257 } 0258 it = changedProperties.constFind(QLatin1String(MM_SMS_PROPERTY_CLASS)); 0259 if (it != changedProperties.constEnd()) { 0260 smsClass = it->toInt(); 0261 Q_EMIT q->smsClassChanged(smsClass); 0262 } 0263 it = changedProperties.constFind(QLatin1String(MM_SMS_PROPERTY_DELIVERYREPORTREQUEST)); 0264 if (it != changedProperties.constEnd()) { 0265 deliveryReportRequest = it->toBool(); 0266 Q_EMIT q->deliveryReportRequestChanged(deliveryReportRequest); 0267 } 0268 it = changedProperties.constFind(QLatin1String(MM_SMS_PROPERTY_MESSAGEREFERENCE)); 0269 if (it != changedProperties.constEnd()) { 0270 messageReference = it->toUInt(); 0271 Q_EMIT q->messageReferenceChanged(messageReference); 0272 } 0273 it = changedProperties.constFind(QLatin1String(MM_SMS_PROPERTY_TIMESTAMP)); 0274 if (it != changedProperties.constEnd()) { 0275 timestamp = QDateTime::fromString(it->toString(), Qt::ISODate); 0276 Q_EMIT q->timestampChanged(timestamp); 0277 } 0278 it = changedProperties.constFind(QLatin1String(MM_SMS_PROPERTY_DISCHARGETIMESTAMP)); 0279 if (it != changedProperties.constEnd()) { 0280 dischargeTimestamp = QDateTime::fromString(it->toString(), Qt::ISODate); 0281 Q_EMIT q->dischargeTimestampChanged(dischargeTimestamp); 0282 } 0283 it = changedProperties.constFind(QLatin1String(MM_SMS_PROPERTY_DELIVERYSTATE)); 0284 if (it != changedProperties.constEnd()) { 0285 deliveryState = (MMSmsDeliveryState)it->toUInt(); 0286 Q_EMIT q->deliveryStateChanged(deliveryState); 0287 } 0288 it = changedProperties.constFind(QLatin1String(MM_SMS_PROPERTY_STORAGE)); 0289 if (it != changedProperties.constEnd()) { 0290 storage = (MMSmsStorage)it->toUInt(); 0291 Q_EMIT q->storageChanged(storage); 0292 } 0293 #if MM_CHECK_VERSION(1, 2, 0) 0294 it = changedProperties.constFind(QLatin1String(MM_SMS_PROPERTY_SERVICECATEGORY)); 0295 if (it != changedProperties.constEnd()) { 0296 serviceCategory = (MMSmsCdmaServiceCategory)it->toUInt(); 0297 Q_EMIT q->serviceCategoryChanged(serviceCategory); 0298 } 0299 it = changedProperties.constFind(QLatin1String(MM_SMS_PROPERTY_TELESERVICEID)); 0300 if (it != changedProperties.constEnd()) { 0301 teleserviceId = (MMSmsCdmaTeleserviceId)it->toUInt(); 0302 Q_EMIT q->teleserviceIdChanged(teleserviceId); 0303 } 0304 #endif 0305 } 0306 } 0307 0308 #include "moc_sms.cpp" 0309 #include "moc_sms_p.cpp"