mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
fix: 修复蓝牙列表中设备顺序与控制中心不一致的问题
增加记录蓝牙设备顺序的列表,根据新增删除设备的顺序对设备进行排序 Log: Influence: 打开快捷面板中的蓝牙列表,在多个设备同时存在的情况下,观察设备顺序是否和控制中心一致 Bug: https://pms.uniontech.com/bug-view-171513.html Change-Id: I5c1017a30e0658022c61a053b9cd724312b37c40
This commit is contained in:
parent
9b33a95fab
commit
06bab9d640
@ -227,10 +227,11 @@ void QuickSettingContainer::onPluginRemove(PluginsItemInterface *itemInter)
|
||||
return item->pluginItem() == itemInter;
|
||||
});
|
||||
|
||||
QuickSettingItem *removeItem = *removeItemIter;
|
||||
if (!removeItem)
|
||||
if (removeItemIter == m_quickSettings.end())
|
||||
return;
|
||||
|
||||
QuickSettingItem *removeItem = *removeItemIter;
|
||||
|
||||
if (removeItem->type() == QuickSettingItem::QuickSettingType::Full)
|
||||
m_componentWidget->layout()->removeWidget(removeItem);
|
||||
else
|
||||
|
@ -173,6 +173,7 @@ void AdaptersManager::onRemoveAdapter(const QString &json)
|
||||
Adapter *adapter = const_cast<Adapter *>(result);
|
||||
if (adapter) {
|
||||
m_adapters.remove(id);
|
||||
m_adapterIds.removeOne(id);
|
||||
emit adapterDecreased(adapter);
|
||||
adapter->deleteLater();
|
||||
}
|
||||
@ -234,21 +235,17 @@ void AdaptersManager::adapterAdd(Adapter *adapter, const QJsonObject &adpterObj)
|
||||
const QString replyStr = reply.value();
|
||||
QJsonDocument doc = QJsonDocument::fromJson(replyStr.toUtf8());
|
||||
adapter->initDevicesList(doc);
|
||||
|
||||
QString id = adapter->id();
|
||||
if (!id.isEmpty()) {
|
||||
if (!m_adapters.contains(id)) {
|
||||
m_adapters[id] = adapter;
|
||||
} else if (!m_adapters[id]) {
|
||||
m_adapters[id] = adapter;
|
||||
}
|
||||
}
|
||||
|
||||
emit this->adapterIncreased(adapter);
|
||||
} else {
|
||||
qWarning() << call.error().message();
|
||||
}
|
||||
});
|
||||
|
||||
QString id = adapter->id();
|
||||
if (!id.isEmpty() && (!m_adapters.contains(id) || !m_adapters[id])) {
|
||||
m_adapters[id] = adapter;
|
||||
m_adapterIds << id;
|
||||
}
|
||||
}
|
||||
|
||||
void AdaptersManager::inflateAdapter(Adapter *adapter, const QJsonObject &adapterObj)
|
||||
@ -275,5 +272,9 @@ void AdaptersManager::adapterRefresh(const Adapter *adapter)
|
||||
|
||||
QList<const Adapter *> AdaptersManager::adapters()
|
||||
{
|
||||
return m_adapters.values();
|
||||
QList<const Adapter *> allAdapter = m_adapters.values();
|
||||
std::sort(allAdapter.begin(), allAdapter.end(), [ & ](const Adapter *adapter1, const Adapter *adapter2) {
|
||||
return m_adapterIds.indexOf(adapter1->id()) < m_adapterIds.indexOf(adapter2->id());
|
||||
});
|
||||
return allAdapter;
|
||||
}
|
||||
|
@ -61,6 +61,7 @@ private:
|
||||
private:
|
||||
DBusBluetooth *m_bluetoothInter;
|
||||
QMap<QString, const Adapter *> m_adapters;
|
||||
QStringList m_adapterIds; // 用于记录蓝牙适配器的排序
|
||||
};
|
||||
|
||||
#endif // ADAPTERSMANAGER_H
|
||||
|
@ -126,6 +126,7 @@ BluetoothApplet::BluetoothApplet(AdaptersManager *adapterManager, QWidget *paren
|
||||
{
|
||||
initUi();
|
||||
initConnect();
|
||||
initAdapters();
|
||||
|
||||
QScroller::grabGesture(m_scroarea, QScroller::LeftMouseButtonGesture);
|
||||
QScrollerProperties propertiesOne = QScroller::scroller(m_scroarea)->scrollerProperties();
|
||||
@ -202,7 +203,8 @@ void BluetoothApplet::onAdapterAdded(Adapter *adapter)
|
||||
|
||||
m_adapterItems.insert(adapter->id(), adapterItem);
|
||||
|
||||
m_contentLayout->insertWidget(0, adapterItem, Qt::AlignTop | Qt::AlignVCenter);
|
||||
// 将最新的设备插入到蓝牙设置前面
|
||||
m_contentLayout->insertWidget(m_contentLayout->count() - 1, adapterItem, Qt::AlignTop | Qt::AlignVCenter);
|
||||
updateBluetoothPowerState();
|
||||
updateSize();
|
||||
}
|
||||
@ -321,6 +323,13 @@ void BluetoothApplet::updateIconTheme()
|
||||
m_scroarea->setPalette(scroareaBackgroud);
|
||||
}
|
||||
|
||||
void BluetoothApplet::initAdapters()
|
||||
{
|
||||
QList<const Adapter *> adapters = m_adaptersManager->adapters();
|
||||
for (const Adapter *adapter : adapters)
|
||||
onAdapterAdded(const_cast<Adapter *>(adapter));
|
||||
}
|
||||
|
||||
void BluetoothApplet::setAirplaneModeEnabled(bool enable)
|
||||
{
|
||||
if (m_airplaneModeEnable == enable)
|
||||
|
@ -115,6 +115,7 @@ private:
|
||||
// 更新蓝牙插件主界面大小
|
||||
void updateSize();
|
||||
void updateIconTheme();
|
||||
void initAdapters();
|
||||
|
||||
private:
|
||||
QScrollArea *m_scroarea;
|
||||
|
Loading…
x
Reference in New Issue
Block a user