File indexing completed on 2024-04-28 03:52:03

0001 /*
0002  * BluezQt - Asynchronous Bluez wrapper library
0003  *
0004  * SPDX-FileCopyrightText: 2015 David Rosca <nowrep@gmail.com>
0005  *
0006  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007  */
0008 
0009 #include "input.h"
0010 #include "input_p.h"
0011 #include "macros.h"
0012 #include "utils.h"
0013 
0014 #include <QVariantMap>
0015 
0016 namespace BluezQt
0017 {
0018 static Input::ReconnectMode stringToReconnectMode(const QString &mode)
0019 {
0020     if (mode == QLatin1String("none")) {
0021         return Input::NoReconnect;
0022     } else if (mode == QLatin1String("host")) {
0023         return Input::HostReconnect;
0024     } else if (mode == QLatin1String("device")) {
0025         return Input::DeviceReconnect;
0026     }
0027     return Input::AnyReconnect;
0028 }
0029 
0030 InputPrivate::InputPrivate(const QString &path, const QVariantMap &properties)
0031     : QObject()
0032     , m_path(path)
0033 {
0034     // Init properties
0035     m_reconnectMode = stringToReconnectMode(properties.value(QStringLiteral("ReconnectMode")).toString());
0036 }
0037 
0038 void InputPrivate::propertiesChanged(const QString &interface, const QVariantMap &changed, const QStringList &invalidated)
0039 {
0040     Q_UNUSED(invalidated)
0041 
0042     if (interface != Strings::orgBluezInput1()) {
0043         return;
0044     }
0045 
0046     QVariantMap::const_iterator i;
0047     for (i = changed.constBegin(); i != changed.constEnd(); ++i) {
0048         const QVariant &value = i.value();
0049         const QString &property = i.key();
0050 
0051         if (property == QLatin1String("ReconnectMode")) {
0052             PROPERTY_CHANGED2(m_reconnectMode, stringToReconnectMode(value.toString()), reconnectModeChanged);
0053         }
0054     }
0055 }
0056 
0057 Input::Input(const QString &path, const QVariantMap &properties)
0058     : d(new InputPrivate(path, properties))
0059 {
0060 }
0061 
0062 Input::~Input() = default;
0063 
0064 InputPtr Input::toSharedPtr() const
0065 {
0066     return d->q.toStrongRef();
0067 }
0068 
0069 Input::ReconnectMode Input::reconnectMode() const
0070 {
0071     return d->m_reconnectMode;
0072 }
0073 
0074 } // namespace BluezQt
0075 
0076 #include "moc_input.cpp"
0077 #include "moc_input_p.cpp"