Warning, file /frameworks/modemmanager-qt/src/modemtime.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 Lukas Tinkl <ltinkl@redhat.com> 0003 SPDX-FileCopyrightText: 2013-2015 Jan Grulich <jgrulich@redhat.com> 0004 0005 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0006 */ 0007 0008 #include "modemtime.h" 0009 #include "mmdebug_p.h" 0010 #include "modemtime_p.h" 0011 #ifdef MMQT_STATIC 0012 #include "dbus/fakedbus.h" 0013 #else 0014 #include "dbus/dbus.h" 0015 #endif 0016 0017 namespace ModemManager 0018 { 0019 class ModemManager::NetworkTimezone::Private 0020 { 0021 public: 0022 Private() 0023 { 0024 } 0025 int offset; 0026 int dstOffset; 0027 int leapSecond; 0028 }; 0029 0030 } 0031 0032 ModemManager::NetworkTimezone::NetworkTimezone() 0033 : d(new Private()) 0034 { 0035 } 0036 0037 ModemManager::NetworkTimezone::NetworkTimezone(const ModemManager::NetworkTimezone &other) 0038 : d(new Private) 0039 { 0040 *this = other; 0041 } 0042 0043 ModemManager::NetworkTimezone::~NetworkTimezone() 0044 { 0045 delete d; 0046 } 0047 0048 int ModemManager::NetworkTimezone::offset() const 0049 { 0050 return d->offset; 0051 } 0052 0053 void ModemManager::NetworkTimezone::setOffset(int offset) 0054 { 0055 d->offset = offset; 0056 } 0057 0058 int ModemManager::NetworkTimezone::dstOffset() const 0059 { 0060 return d->dstOffset; 0061 } 0062 0063 void ModemManager::NetworkTimezone::setDstOffset(int dstOffset) 0064 { 0065 d->dstOffset = dstOffset; 0066 } 0067 0068 int ModemManager::NetworkTimezone::leapSecond() const 0069 { 0070 return d->leapSecond; 0071 } 0072 0073 void ModemManager::NetworkTimezone::setLeapSecond(int leapSecond) 0074 { 0075 d->leapSecond = leapSecond; 0076 } 0077 0078 ModemManager::NetworkTimezone &ModemManager::NetworkTimezone::operator=(const ModemManager::NetworkTimezone &other) 0079 { 0080 if (this == &other) { 0081 return *this; 0082 } 0083 0084 *d = *other.d; 0085 return *this; 0086 } 0087 0088 ModemManager::ModemTimePrivate::ModemTimePrivate(const QString &path, ModemTime *q) 0089 : InterfacePrivate(path, q) 0090 #ifdef MMQT_STATIC 0091 , modemTimeIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::sessionBus()) 0092 #else 0093 , modemTimeIface(QLatin1String(MMQT_DBUS_SERVICE), path, QDBusConnection::systemBus()) 0094 #endif 0095 , q_ptr(q) 0096 { 0097 if (modemTimeIface.isValid()) { 0098 networkTimezone = variantMapToTimezone(modemTimeIface.networkTimezone()); 0099 } 0100 } 0101 0102 ModemManager::ModemTime::ModemTime(const QString &path, QObject *parent) 0103 : Interface(*new ModemTimePrivate(path, this), parent) 0104 { 0105 Q_D(ModemTime); 0106 0107 connect(&d->modemTimeIface, &OrgFreedesktopModemManager1ModemTimeInterface::NetworkTimeChanged, d, &ModemTimePrivate::onNetworkTimeChanged); 0108 #ifdef MMQT_STATIC 0109 QDBusConnection::sessionBus().connect(QLatin1String(MMQT_DBUS_SERVICE), 0110 d->uni, 0111 QLatin1String(DBUS_INTERFACE_PROPS), 0112 QStringLiteral("PropertiesChanged"), 0113 d, 0114 SLOT(onPropertiesChanged(QString, QVariantMap, QStringList))); 0115 #else 0116 QDBusConnection::systemBus().connect(QLatin1String(MMQT_DBUS_SERVICE), 0117 d->uni, 0118 QLatin1String(DBUS_INTERFACE_PROPS), 0119 QStringLiteral("PropertiesChanged"), 0120 d, 0121 SLOT(onPropertiesChanged(QString, QVariantMap, QStringList))); 0122 #endif 0123 } 0124 0125 ModemManager::ModemTime::~ModemTime() 0126 { 0127 } 0128 0129 QDBusPendingReply<QString> ModemManager::ModemTime::networkTime() 0130 { 0131 Q_D(ModemTime); 0132 0133 return d->modemTimeIface.GetNetworkTime(); 0134 } 0135 0136 ModemManager::NetworkTimezone ModemManager::ModemTime::networkTimezone() const 0137 { 0138 Q_D(const ModemTime); 0139 0140 return d->networkTimezone; 0141 } 0142 0143 ModemManager::NetworkTimezone ModemManager::ModemTimePrivate::variantMapToTimezone(const QVariantMap &map) 0144 { 0145 ModemManager::NetworkTimezone result; 0146 if (map.contains(QLatin1String("offset"))) { 0147 result.setOffset(map.value(QStringLiteral("offset")).toInt()); 0148 } 0149 if (map.contains(QLatin1String("dst-offset"))) { 0150 result.setDstOffset(map.value(QStringLiteral("dst-offset")).toInt()); 0151 } 0152 if (map.contains(QLatin1String("leap-seconds"))) { 0153 result.setLeapSecond(map.value(QStringLiteral("leap-seconds")).toInt()); 0154 } 0155 0156 return result; 0157 } 0158 0159 void ModemManager::ModemTime::setTimeout(int timeout) 0160 { 0161 Q_D(ModemTime); 0162 d->modemTimeIface.setTimeout(timeout); 0163 } 0164 0165 int ModemManager::ModemTime::timeout() const 0166 { 0167 Q_D(const ModemTime); 0168 return d->modemTimeIface.timeout(); 0169 } 0170 0171 void ModemManager::ModemTimePrivate::onNetworkTimeChanged(const QString &isoDateTime) 0172 { 0173 Q_Q(ModemTime); 0174 0175 const QDateTime result = QDateTime::fromString(isoDateTime, Qt::ISODate); 0176 if (result.isValid()) { 0177 Q_EMIT q->networkTimeChanged(result); 0178 } 0179 } 0180 0181 void ModemManager::ModemTimePrivate::onPropertiesChanged(const QString &interface, const QVariantMap &properties, const QStringList &invalidatedProps) 0182 { 0183 Q_Q(ModemTime); 0184 Q_UNUSED(invalidatedProps); 0185 qCDebug(MMQT) << interface << properties.keys(); 0186 0187 if (interface == QLatin1String(MMQT_DBUS_INTERFACE_MODEM_TIME)) { 0188 QVariantMap::const_iterator it = properties.constFind(QLatin1String(MM_MODEM_TIME_PROPERTY_NETWORKTIMEZONE)); 0189 if (it != properties.constEnd()) { 0190 networkTimezone = variantMapToTimezone(qdbus_cast<QVariantMap>(*it)); 0191 Q_EMIT q->networkTimezoneChanged(networkTimezone); 0192 } 0193 } 0194 } 0195 0196 #include "moc_modemtime.cpp"