diff --git a/plugins/bluetooth/componments/adapteritem.cpp b/plugins/bluetooth/componments/adapteritem.cpp index 172c01683..5949c70a1 100644 --- a/plugins/bluetooth/componments/adapteritem.cpp +++ b/plugins/bluetooth/componments/adapteritem.cpp @@ -299,7 +299,9 @@ void AdapterItem::createDeviceItem(Device *device) connect(device, &Device::stateChanged, deviceItem, &DeviceItem::changeState); connect(device, &Device::stateChanged, this, &AdapterItem::deviceChangeState); connect(device, &Device::rssiChanged, this, &AdapterItem::deviceRssiChanged); - connect(deviceItem, &DeviceItem::clicked, m_adaptersManager, &AdaptersManager::connectDevice); + connect(deviceItem, &DeviceItem::clicked, m_adaptersManager, [this](Device *device){ + m_adaptersManager->connectDevice(device, m_adapter); + }); } void AdapterItem::updateView() diff --git a/plugins/bluetooth/componments/adaptersmanager.cpp b/plugins/bluetooth/componments/adaptersmanager.cpp index 623499a44..500e42336 100644 --- a/plugins/bluetooth/componments/adaptersmanager.cpp +++ b/plugins/bluetooth/componments/adaptersmanager.cpp @@ -134,13 +134,13 @@ void AdaptersManager::setAdapterPowered(const Adapter *adapter, const bool &powe // } //} -void AdaptersManager::connectDevice(Device *device) +void AdaptersManager::connectDevice(Device *device, Adapter *adapter) { if (device) { QDBusObjectPath path(device->id()); switch (device->state()) { case Device::StateUnavailable: { - m_bluetoothInter->ConnectDevice(path); + m_bluetoothInter->ConnectDevice(path, QDBusObjectPath(adapter->id())); qDebug() << "connect to device: " << device->name(); } break; diff --git a/plugins/bluetooth/componments/adaptersmanager.h b/plugins/bluetooth/componments/adaptersmanager.h index a179f39e3..9e751db73 100644 --- a/plugins/bluetooth/componments/adaptersmanager.h +++ b/plugins/bluetooth/componments/adaptersmanager.h @@ -39,7 +39,7 @@ public: void setAdapterPowered(const Adapter *adapter, const bool &powered); // void connectAllPairedDevice(const Adapter *adapter); - void connectDevice(Device *deviceId); + void connectDevice(Device *device, Adapter *adapter); bool defaultAdapterInitPowerState(); int adaptersCount(); void adapterRefresh(const Adapter *adapter); diff --git a/plugins/bluetooth/componments/device.cpp b/plugins/bluetooth/componments/device.cpp index f3c2b5f05..f7c72b6f7 100644 --- a/plugins/bluetooth/componments/device.cpp +++ b/plugins/bluetooth/componments/device.cpp @@ -22,6 +22,8 @@ #include "device.h" +#include + QMap Device::deviceType2Icon = { {"unknow","other"}, {"computer","pc"}, @@ -50,6 +52,7 @@ Device::Device(QObject *parent) , m_state(StateUnavailable) , m_connectState(false) { + m_time = static_cast(QDateTime::currentDateTime().toTime_t()); } Device::~Device() @@ -57,6 +60,11 @@ Device::~Device() emit stateChanged(StateUnavailable); } +void Device::updateDeviceTime() +{ + m_time = static_cast(QDateTime::currentDateTime().toTime_t()); +} + void Device::setId(const QString &id) { m_id = id; diff --git a/plugins/bluetooth/componments/device.h b/plugins/bluetooth/componments/device.h index 2ddf95d00..908ba8f9e 100644 --- a/plugins/bluetooth/componments/device.h +++ b/plugins/bluetooth/componments/device.h @@ -75,6 +75,9 @@ public: inline QString deviceType() const { return m_deviceType; } void setDeviceType(const QString &deviceType); + inline int deviceTime() const { return m_time; } + void updateDeviceTime(); + Q_SIGNALS: void nameChanged(const QString &name) const; void pairedChanged(const bool paired) const; @@ -95,6 +98,7 @@ private: bool m_connectState; QString m_adapterId; QString m_deviceType; + int m_time; }; QDebug &operator<<(QDebug &stream, const Device *device); diff --git a/plugins/bluetooth/componments/deviceitem.cpp b/plugins/bluetooth/componments/deviceitem.cpp index a417643fe..8fbc04ca6 100644 --- a/plugins/bluetooth/componments/deviceitem.cpp +++ b/plugins/bluetooth/componments/deviceitem.cpp @@ -109,6 +109,7 @@ DeviceItem::DeviceItem(Device *d, QWidget *parent) bool DeviceItem::operator <(const DeviceItem &item) { +// return this->device()->deviceTime() < item.device()->deviceTime(); return this->device()->rssi() < item.device()->rssi(); } @@ -119,6 +120,7 @@ void DeviceItem::setTitle(const QString &name) void DeviceItem::mousePressEvent(QMouseEvent *event) { + m_device->updateDeviceTime(); emit clicked(m_device); QWidget::mousePressEvent(event); }