Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Handling hidden logic on web pages #271

Merged
merged 1 commit into from
Nov 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions dcc-network/qml/PageAirplane.qml
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,12 @@ DccObject {
DccObject {
name: "airplaneTips"
parentName: root.name + "/menu"
displayName: qsTr("Enabling the airplane mode turns off wireless network, personal hotspot and Bluetooth")
weight: 20
pageType: DccObject.Item
page: DccLabel {
text: qsTr("打开飞行模式将关闭无线网络、个人热点和蓝牙功能")
page: D.Label {
text: dccObj.displayName
wrapMode: Text.WordWrap
}
}
}
Expand Down
17 changes: 16 additions & 1 deletion dcc-network/qml/PageHotspot.qml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import org.deepin.dcc.network 1.0
DccObject {
id: root
property var item: null
property var airplaneItem: null
property var config: null
property string interfaceName: ""

Expand Down Expand Up @@ -77,7 +78,7 @@ DccObject {
value: ""
}
}
// visible: item && item.enabledable
visible: item && item.enabledable
displayName: qsTr("Personal Hotspot")
icon: "dcc_hotspot"
hasBackground: true
Expand Down Expand Up @@ -462,5 +463,19 @@ DccObject {
}
}
}
DccObject {
name: "airplaneTips"
parentName: root.name + "/menu"
visible: root.airplaneItem && root.airplaneItem.isEnabled && root.airplaneItem.enabledable
displayName: qsTr("If you want to use the personal hotspot, disable Airplane Mode first and then enable the wireless network adapter.")
weight: 70
pageType: DccObject.Item
page: D.Label {
textFormat: Text.RichText
text: qsTr("If you want to use the personal hotspot, disable <a style='text-decoration: none;' href='network/airplaneMode'>Airplane Mode</a> first and then enable the wireless network adapter.")
wrapMode: Text.WordWrap
onLinkActivated: link => DccApp.showPage(link)
}
}
}
}
33 changes: 31 additions & 2 deletions dcc-network/qml/PageWirelessDevice.qml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import org.deepin.dcc.network 1.0
DccObject {
id: root
property var item: null
property var airplaneItem: null
readonly property var c_levelString: ["-signal-no", "-signal-low", "-signal-medium", "-signal-high", "-signal-full"]

name: "wireless" + item.pathIndex
Expand Down Expand Up @@ -180,7 +181,7 @@ DccObject {
weight: 40
pageType: DccObject.Item
hasBackground: true
visible: root.item && root.item.isEnabled && !root.item.apMode
visible: root.item && root.item.isEnabled && !root.item.apMode && this.item && this.item.children.length > 0
page: networkList
}
DccObject {
Expand Down Expand Up @@ -211,11 +212,39 @@ DccObject {
name: "otherNetwork"
parentName: root.name + "/page"
weight: 60
visible: root.item && root.item.isEnabled && !root.item.apMode
visible: root.item && root.item.isEnabled && !root.item.apMode && this.item && this.item.children.length > 0
pageType: DccObject.Item
hasBackground: true
page: networkList
}
DccObject {
name: "airplaneTips"
parentName: root.name + "/page"
visible: root.airplaneItem && root.airplaneItem.isEnabled && root.airplaneItem.enabledable
displayName: qsTr("Disable Airplane Mode first if you want to connect to a wireless network")
weight: 70
pageType: DccObject.Item
page: D.Label {
textFormat: Text.RichText
text: qsTr("Disable <a style='text-decoration: none;' href='network/airplaneMode'>Airplane Mode</a> first if you want to connect to a wireless network")
wrapMode: Text.WordWrap
onLinkActivated: link => DccApp.showPage(link)
}
}
DccObject {
name: "airplaneTips"
parentName: root.name + "/page"
visible: root.item && root.item.apMode
displayName: qsTr("Disable hotspot first if you want to connect to a wireless network")
weight: 70
pageType: DccObject.Item
page: D.Label {
textFormat: Text.RichText
text: qsTr("<a style='text-decoration: none;' href='NetHotspotControlItem'>Disable hotspot</a> first if you want to connect to a wireless network")
wrapMode: Text.WordWrap
onLinkActivated: link => dccData.exec(NetManager.DisabledDevice, link, {})
}
}
PageSettings {
id: wirelessSettings
name: "wirelessSettings"
Expand Down
3 changes: 2 additions & 1 deletion dcc-network/qml/main.qml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,8 @@ DccObject {
delWirelessDevs.splice(index, 1)
} else {
let dev = wirelessComponent.createObject(root, {
"item": item
"item": item,
"airplaneItem": dccData.root
})
DccApp.addObject(dev)
wirelessDevs.push(dev)
Expand Down
2 changes: 2 additions & 0 deletions net-view/operation/netmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -854,6 +854,7 @@ void NetManagerPrivate::setDeviceEnabled(const QString &id, bool enabled)
case NetType::NetItemType::WiredDeviceItem:
case NetType::NetItemType::WirelessDeviceItem:
case NetType::NetItemType::VPNControlItem:
case NetType::NetItemType::HotspotControlItem:
case NetType::NetItemType::SystemProxyControlItem: {
setDeviceEnabled(NetItemPrivate::toItem<NetControlItemPrivate>(item), enabled);
} break;
Expand Down Expand Up @@ -886,6 +887,7 @@ void NetManagerPrivate::setDeviceEnabled(NetControlItemPrivate *controlItem, boo
m_managerThread->setDeviceEnabled(controlItem->id(), enabled);
}
} break;
case NetType::NetItemType::HotspotControlItem:
case NetType::NetItemType::VPNControlItem:
case NetType::NetItemType::SystemProxyControlItem: {
if (controlItem->enabledable() && controlItem->isEnabled() != enabled) {
Expand Down
18 changes: 15 additions & 3 deletions net-view/operation/private/nethotspotcontroller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,15 @@ namespace network {
NetHotspotController::NetHotspotController(QObject *parent)
: QObject(parent)
, m_isEnabled(false)
, m_enabledable(true)
, m_updatedTimer(new QTimer(this))
{
m_updatedTimer->setSingleShot(true);
m_updatedTimer->setInterval(50);
m_hotspotController = NetworkController::instance()->hotspotController();
updateData();
updateConfig();
m_enabledable = m_hotspotController->supportHotspot();
connect(m_hotspotController, &HotspotController::deviceAdded, this, &NetHotspotController::updateData);
connect(m_hotspotController, &HotspotController::deviceRemove, this, &NetHotspotController::updateData);
connect(m_hotspotController, &HotspotController::activeConnectionChanged, this, &NetHotspotController::updateEnabled);
Expand All @@ -40,7 +42,7 @@ bool NetHotspotController::isEnabled() const

bool NetHotspotController::enabledable() const
{
return m_hotspotController->supportHotspot();
return m_enabledable;
}

const QVariantMap &NetHotspotController::config() const
Expand Down Expand Up @@ -73,6 +75,15 @@ void NetHotspotController::updateEnabled()
}
}

void NetHotspotController::updateEnabledable()
{
bool enabledable = m_hotspotController->supportHotspot();
if (enabledable != m_enabledable) {
m_enabledable = enabledable;
Q_EMIT enabledableChanged(m_enabledable);
}
}

void NetHotspotController::updateData()
{
QStringList optionalDevice;
Expand All @@ -86,6 +97,8 @@ void NetHotspotController::updateData()
connect(dev, &WirelessDevice::hotspotEnableChanged, this, &NetHotspotController::updateEnabled, Qt::UniqueConnection);
}
updateEnabled();
updateEnabledable();

if (optionalDevice != m_optionalDevice) {
m_optionalDevice = optionalDevice;
Q_EMIT optionalDeviceChanged(m_optionalDevice);
Expand Down Expand Up @@ -123,6 +136,7 @@ void NetHotspotController::updateConfig()
settings.reset(new NetworkManager::ConnectionSettings(NetworkManager::ConnectionSettings::Wireless));

settings->setId(NetworkManager::hostname());
settings->setAutoconnect(false);
NetworkManager::WirelessSetting::Ptr wSetting = settings->setting(NetworkManager::Setting::SettingType::Wireless).staticCast<NetworkManager::WirelessSetting>();
wSetting->setSsid(settings->id().toUtf8());
wSetting->setMode(NetworkManager::WirelessSetting::Ap);
Expand All @@ -131,8 +145,6 @@ void NetHotspotController::updateConfig()
NetworkManager::Ipv4Setting::Ptr ipv4Setting = settings->setting(NetworkManager::Setting::SettingType::Ipv4).staticCast<NetworkManager::Ipv4Setting>();
ipv4Setting->setMethod(NetworkManager::Ipv4Setting::ConfigMethod::Shared);
ipv4Setting->setInitialized(true);
// } else if (m_config.contains("connection") && m_config.value("connection").value<QVariantMap>().value("uuid").toString() == settings->uuid()) {
// return;
} else {
// conn->secrets会触发两次itemChanged信号
m_updatedTimer->start();
Expand Down
2 changes: 2 additions & 0 deletions net-view/operation/private/nethotspotcontroller.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,14 @@ class NetHotspotController : public QObject

private Q_SLOTS:
void updateEnabled();
void updateEnabledable();
void updateData();
void updateConfig();

private:
HotspotController *m_hotspotController;
bool m_isEnabled;
bool m_enabledable;
QVariantMap m_config;
QStringList m_shareDevice;
QStringList m_optionalDevice;
Expand Down
35 changes: 28 additions & 7 deletions net-view/operation/private/netmanagerthreadprivate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -149,10 +149,9 @@

void NetManagerThreadPrivate::getAirplaneModeEnabled()
{
QDBusMessage message = QDBusMessage::createMethodCall("org.deepin.dde.AirplaneMode1", "/org/deepin/dde/AirplaneMode1", "org.freedesktop.DBus.Properties", "Get");
message << "org.deepin.dde.AirplaneMode1"
<< "Enabled";
QDBusConnection::systemBus().callWithCallback(message, this, SLOT(updateAirplaneModeEnabled(QDBusVariant)));
QDBusMessage message = QDBusMessage::createMethodCall("org.deepin.dde.AirplaneMode1", "/org/deepin/dde/AirplaneMode1", "org.freedesktop.DBus.Properties", "GetAll");
message << "org.deepin.dde.AirplaneMode1";
QDBusConnection::systemBus().callWithCallback(message, this, SLOT(onAirplaneModePropertiesChanged(QVariantMap)));
}

void NetManagerThreadPrivate::setAirplaneModeEnabled(bool enabled)
Expand Down Expand Up @@ -336,11 +335,19 @@
}
}

void NetManagerThreadPrivate::onAirplaneModeEnabledPropertiesChanged(QString, QVariantMap properties, QStringList)
void NetManagerThreadPrivate::onAirplaneModeEnabledPropertiesChanged(const QString &, const QVariantMap &properties, const QStringList &)

Check warning on line 338 in net-view/operation/private/netmanagerthreadprivate.cpp

View workflow job for this annotation

GitHub Actions / cppcheck

The function 'onAirplaneModeEnabledPropertiesChanged' is never used.
{
onAirplaneModePropertiesChanged(properties);
}

void NetManagerThreadPrivate::onAirplaneModePropertiesChanged(const QVariantMap &properties)
{
if (properties.contains("Enabled")) {
updateAirplaneModeEnabled(QDBusVariant(properties.value("Enabled").value<bool>()));
}
if (properties.contains("HasAirplaneMode")) {
updateAirplaneModeEnabledable(QDBusVariant(properties.value("HasAirplaneMode").value<bool>()));
}
}

void NetManagerThreadPrivate::connectOrInfo(const QString &id, NetType::NetItemType type, const QVariantMap &param)
Expand Down Expand Up @@ -489,7 +496,7 @@
NetHotspotController *netHotspotController = new NetHotspotController(this);
NetHotspotControlItemPrivate *hotspotcontrolitem = NetItemNew(HotspotControlItem, "NetHotspotControlItem");
hotspotcontrolitem->updateconfig(netHotspotController->config());
hotspotcontrolitem->updateenabled(netHotspotController->enabledable());
hotspotcontrolitem->updateenabledable(netHotspotController->enabledable());
hotspotcontrolitem->updateenabled(netHotspotController->isEnabled());
hotspotcontrolitem->updateoptionalDevice(netHotspotController->optionalDevice());
hotspotcontrolitem->updateshareDevice(netHotspotController->shareDevice());
Expand Down Expand Up @@ -567,9 +574,18 @@
{
if (id == "NetVPNControlItem") {
NetworkController::instance()->vpnController()->setEnabled(enabled);
return;
}
if (id == "NetSystemProxyControlItem") {
NetworkController::instance()->proxyController()->setProxyMethod(enabled ? ConfigWatcher::instance()->proxyMethod() : ProxyMethod::None);
return;
}
if (id == "NetHotspotControlItem") {
HotspotController *hotspotController = NetworkController::instance()->hotspotController();
for (auto dev : hotspotController->devices()) {
hotspotController->setEnabled(dev, enabled);
}
return;
}

for (NetworkDeviceBase *device : NetworkController::instance()->devices()) {
Expand Down Expand Up @@ -791,10 +807,15 @@
void NetManagerThreadPrivate::updateAirplaneModeEnabled(const QDBusVariant &enabled)
{
m_airplaneModeEnabled = enabled.variant().toBool() && supportAirplaneMode();
qWarning()<<__FUNCTION__<<__LINE__<<enabled.variant()<<supportAirplaneMode()<<m_airplaneModeEnabled;
Q_EMIT dataChanged(DataChanged::EnabledChanged, "Root", QVariant(m_airplaneModeEnabled));
}

void NetManagerThreadPrivate::updateAirplaneModeEnabledable(const QDBusVariant &enabledable)
{
bool airplaneEnabledable = enabledable.variant().toBool();
Q_EMIT dataChanged(DataChanged::DeviceAvailableChanged, "Root", QVariant(airplaneEnabledable));
}

bool NetManagerThreadPrivate::supportAirplaneMode() const
{
// dde-dconfig配置优先级高于设备优先级
Expand Down
4 changes: 3 additions & 1 deletion net-view/operation/private/netmanagerthreadprivate.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,8 @@ public Q_SLOTS:
const QVariantMap &hints = {},
int expireTimeout = 5000);
void onNetCheckPropertiesChanged(QString, QVariantMap properties, QStringList);
void onAirplaneModeEnabledPropertiesChanged(QString, QVariantMap properties, QStringList);
void onAirplaneModeEnabledPropertiesChanged(const QString &, const QVariantMap &properties, const QStringList &);
void onAirplaneModePropertiesChanged(const QVariantMap &properties);

void connectOrInfo(const QString &id, NetType::NetItemType type, const QVariantMap &param);
void getConnectInfo(const QString &id, NetType::NetItemType type, const QVariantMap &param);
Expand All @@ -152,6 +153,7 @@ protected Q_SLOTS:
void doRetranslate(const QString &locale);
void updateNetCheckAvailabled(const QDBusVariant &availabled);
void updateAirplaneModeEnabled(const QDBusVariant &enabled);
void updateAirplaneModeEnabledable(const QDBusVariant &enabledable);
bool supportAirplaneMode() const;
void doConnectOrInfo(const QString &id, NetType::NetItemType type, const QVariantMap &param);
void doGetConnectInfo(const QString &id, NetType::NetItemType type, const QVariantMap &param);
Expand Down
Loading