fix: 蓝牙设备不可用时使能开关按钮 (#734)

1、删除使用错误的调色板,直接使用系统默认调色板。
2、蓝牙设备不可用时使能开关按钮,不禁用整个界面,避免界面文字内容不清

Log: 控制中心-个性化内设置为深色,从任务栏打开蓝牙面板后,蓝牙设置字体未变成浅色
Bug: https://pms.uniontech.com/bug-view-176333.html
Influence: 蓝牙设置字体跟随系统主题变化
This commit is contained in:
chenjun 2022-12-19 16:32:02 +08:00 committed by GitHub
parent 32686e2ff6
commit 95617eb2b1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 17 additions and 25 deletions

View File

@ -139,6 +139,7 @@ BluetoothAdapterItem::BluetoothAdapterItem(Adapter *adapter, QWidget *parent)
, m_refreshBtn(new RefreshButton(this)) , m_refreshBtn(new RefreshButton(this))
, m_bluetoothInter(new DBusBluetooth("com.deepin.daemon.Bluetooth", "/com/deepin/daemon/Bluetooth", QDBusConnection::sessionBus(), this)) , m_bluetoothInter(new DBusBluetooth("com.deepin.daemon.Bluetooth", "/com/deepin/daemon/Bluetooth", QDBusConnection::sessionBus(), this))
, m_showUnnamedDevices(false) , m_showUnnamedDevices(false)
, m_stateBtnEnabled(true)
, m_seperator(new HorizontalSeperator(this)) , m_seperator(new HorizontalSeperator(this))
{ {
initData(); initData();
@ -226,6 +227,17 @@ QStringList BluetoothAdapterItem::connectedDevicesName()
return devsName; return devsName;
} }
void BluetoothAdapterItem::setStateBtnEnabled(bool enable)
{
if (m_stateBtnEnabled != enable) {
m_stateBtnEnabled = enable;
}
if (m_adapterStateBtn) {
m_adapterStateBtn->setEnabled(m_stateBtnEnabled);
}
}
void BluetoothAdapterItem::initData() void BluetoothAdapterItem::initData()
{ {
m_showUnnamedDevices = m_bluetoothInter->displaySwitch(); m_showUnnamedDevices = m_bluetoothInter->displaySwitch();
@ -381,7 +393,7 @@ void BluetoothAdapterItem::initConnect()
m_deviceListview->setVisible(state); m_deviceListview->setVisible(state);
m_seperator->setVisible(state); m_seperator->setVisible(state);
m_adapterStateBtn->setChecked(state); m_adapterStateBtn->setChecked(state);
m_adapterStateBtn->setEnabled(true); m_adapterStateBtn->setEnabled(m_stateBtnEnabled);
emit adapterPowerChanged(); emit adapterPowerChanged();
}); });
connect(m_adapterStateBtn, &DSwitchButton::clicked, this, [ = ](bool state) { connect(m_adapterStateBtn, &DSwitchButton::clicked, this, [ = ](bool state) {

View File

@ -84,6 +84,7 @@ public:
~BluetoothAdapterItem(); ~BluetoothAdapterItem();
Adapter *adapter() { return m_adapter; } Adapter *adapter() { return m_adapter; }
QStringList connectedDevicesName(); QStringList connectedDevicesName();
void setStateBtnEnabled(bool);
public slots: public slots:
// 添加蓝牙设备 // 添加蓝牙设备
@ -125,6 +126,7 @@ private:
RefreshButton *m_refreshBtn; RefreshButton *m_refreshBtn;
DBusBluetooth *m_bluetoothInter; DBusBluetooth *m_bluetoothInter;
bool m_showUnnamedDevices; bool m_showUnnamedDevices;
bool m_stateBtnEnabled;
QMap<QString, BluetoothDeviceItem *> m_deviceItems; QMap<QString, BluetoothDeviceItem *> m_deviceItems;
HorizontalSeperator *m_seperator; HorizontalSeperator *m_seperator;

View File

@ -43,7 +43,6 @@ SettingLabel::SettingLabel(QString text, QWidget *parent)
this->setPalette(p); this->setPalette(p);
m_label->setForegroundRole(QPalette::BrightText); m_label->setForegroundRole(QPalette::BrightText);
updateEnabledStatus();
} }
void SettingLabel::addButton(QWidget *button, int space) void SettingLabel::addButton(QWidget *button, int space)
@ -52,24 +51,6 @@ void SettingLabel::addButton(QWidget *button, int space)
m_layout->addSpacing(space); m_layout->addSpacing(space);
} }
void SettingLabel::updateEnabledStatus()
{
QPalette p = m_label->palette();
if (m_label->isEnabled())
p.setColor(QPalette::BrightText, QColor(0, 0, 0));
else
p.setColor(QPalette::BrightText, QColor(51, 51, 51));
m_label->setPalette(p);
}
void SettingLabel::changeEvent(QEvent *event)
{
if (event->type() == QEvent::EnabledChange)
updateEnabledStatus();
QWidget::changeEvent(event);
}
void SettingLabel::mousePressEvent(QMouseEvent *ev) void SettingLabel::mousePressEvent(QMouseEvent *ev)
{ {
if (ev->button() == Qt::LeftButton) { if (ev->button() == Qt::LeftButton) {
@ -175,7 +156,7 @@ void BluetoothApplet::onAdapterAdded(Adapter *adapter)
// 如果开启了飞行模式,置灰蓝牙适配器使能开关 // 如果开启了飞行模式,置灰蓝牙适配器使能开关
foreach (const auto item, m_adapterItems) { foreach (const auto item, m_adapterItems) {
item->setEnabled(!m_airPlaneModeInter->enabled()); item->setStateBtnEnabled(!m_airPlaneModeInter->enabled());
} }
m_contentLayout->insertWidget(0, adapterItem, Qt::AlignTop | Qt::AlignVCenter); m_contentLayout->insertWidget(0, adapterItem, Qt::AlignTop | Qt::AlignVCenter);
@ -272,7 +253,7 @@ void BluetoothApplet::initConnect()
connect(m_airPlaneModeInter, &DBusAirplaneMode::EnabledChanged, this, &BluetoothApplet::setAirplaneModeEnabled); connect(m_airPlaneModeInter, &DBusAirplaneMode::EnabledChanged, this, &BluetoothApplet::setAirplaneModeEnabled);
connect(m_airPlaneModeInter, &DBusAirplaneMode::EnabledChanged, this, [this](bool enabled) { connect(m_airPlaneModeInter, &DBusAirplaneMode::EnabledChanged, this, [this](bool enabled) {
foreach (const auto item, m_adapterItems) { foreach (const auto item, m_adapterItems) {
item->setEnabled(!enabled); item->setStateBtnEnabled(!enabled);
} }
}); });
} }

View File

@ -46,9 +46,6 @@ signals:
protected: protected:
void mousePressEvent(QMouseEvent *ev) override; void mousePressEvent(QMouseEvent *ev) override;
void paintEvent(QPaintEvent *event) override; void paintEvent(QPaintEvent *event) override;
void changeEvent(QEvent *event) override;
void updateEnabledStatus();
private: private:
DLabel *m_label; DLabel *m_label;