/** * This file is part of TelepathyQt * * @copyright Copyright (C) 2010 Collabora Ltd. * @copyright Copyright (C) 2010 Nokia Corporation * @license LGPL 2.1 * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include namespace Tp { struct TP_QT_NO_EXPORT LocationInfo::Private : public QSharedData { QVariantMap location; }; /** * \class LocationInfo * \ingroup clientconn * \headerfile TelepathyQt/location-info.h * * \brief The LocationInfo class represents the location of a * Telepathy Contact. */ /** * Construct a new LocationInfo object. */ LocationInfo::LocationInfo() : mPriv(new Private) { } LocationInfo::LocationInfo(const QVariantMap &location) : mPriv(new Private) { mPriv->location = location; } LocationInfo::LocationInfo(const LocationInfo &other) : mPriv(other.mPriv) { } /** * Class destructor. */ LocationInfo::~LocationInfo() { } LocationInfo &LocationInfo::operator=(const LocationInfo &other) { this->mPriv = other.mPriv; return *this; } QString LocationInfo::countryCode() const { return qdbus_cast(mPriv->location.value( QLatin1String("countrycode"))); } QString LocationInfo::country() const { return qdbus_cast(mPriv->location.value( QLatin1String("country"))); } QString LocationInfo::region() const { return qdbus_cast(mPriv->location.value( QLatin1String("region"))); } QString LocationInfo::locality() const { return qdbus_cast(mPriv->location.value( QLatin1String("locality"))); } QString LocationInfo::area() const { return qdbus_cast(mPriv->location.value( QLatin1String("area"))); } QString LocationInfo::postalCode() const { return qdbus_cast(mPriv->location.value( QLatin1String("postalcode"))); } QString LocationInfo::street() const { return qdbus_cast(mPriv->location.value( QLatin1String("street"))); } QString LocationInfo::building() const { return qdbus_cast(mPriv->location.value( QLatin1String("building"))); } QString LocationInfo::floor() const { return qdbus_cast(mPriv->location.value( QLatin1String("floor"))); } QString LocationInfo::room() const { return qdbus_cast(mPriv->location.value( QLatin1String("room"))); } QString LocationInfo::text() const { return qdbus_cast(mPriv->location.value( QLatin1String("text"))); } QString LocationInfo::description() const { return qdbus_cast(mPriv->location.value( QLatin1String("description"))); } QString LocationInfo::uri() const { return qdbus_cast(mPriv->location.value( QLatin1String("uri"))); } QString LocationInfo::language() const { return qdbus_cast(mPriv->location.value( QLatin1String("language"))); } double LocationInfo::latitude() const { return qdbus_cast(mPriv->location.value( QLatin1String("lat"))); } double LocationInfo::longitude() const { return qdbus_cast(mPriv->location.value( QLatin1String("lon"))); } double LocationInfo::altitude() const { return qdbus_cast(mPriv->location.value( QLatin1String("alt"))); } double LocationInfo::accuracy() const { return qdbus_cast(mPriv->location.value( QLatin1String("accuracy"))); } double LocationInfo::speed() const { return qdbus_cast(mPriv->location.value( QLatin1String("speed"))); } double LocationInfo::bearing() const { return qdbus_cast(mPriv->location.value( QLatin1String("bearing"))); } QDateTime LocationInfo::timestamp() const { // FIXME See http://bugs.freedesktop.org/show_bug.cgi?id=21690 qlonglong t = qdbus_cast(mPriv->location.value( QLatin1String("timestamp"))); if (t != 0) { #if QT_VERSION < QT_VERSION_CHECK(5, 8, 0) return QDateTime::fromTime_t((uint) t); #else return QDateTime::fromSecsSinceEpoch((uint) t); #endif } return QDateTime(); } QVariantMap LocationInfo::allDetails() const { return mPriv->location; } void LocationInfo::updateData(const QVariantMap &location) { if (!isValid()) { mPriv = new Private; } mPriv->location = location; } } // Tp