NetworkManager: Make sure we show an IM at the *start* of a Wi-Fi toggle action (#9064)

Ensures the worst-case scenario has minimal visual feedback.
reviewable/pr9073/r1
NiLuJe 2 years ago committed by GitHub
parent d6ff983243
commit 2de2a8ab76
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -277,7 +277,7 @@ function KoboPowerD:getCapacityHW()
return self:read_int_file(self.batt_capacity_file)
end
-- NOTE: Match the behavior of the NXP ntx_io _Is_USB_plugged ioctl!
-- NOTE: Match the behavior of the ntx_io _Is_USB_plugged ioctl!
-- (Otherwise, a device that is fully charged, but still plugged in will no longer be flagged as charging).
function KoboPowerD:isChargingHW()
return self:read_str_file(self.is_charging_file) ~= "Discharging"

@ -70,7 +70,8 @@ local settingsList = {
toggle_gsensor = {category="none", event="ToggleGSensor", title=_("Toggle accelerometer"), device=true, condition=Device:canToggleGSensor()},
wifi_on = {category="none", event="InfoWifiOn", title=_("Turn on Wi-Fi"), device=true, condition=Device:hasWifiToggle()},
wifi_off = {category="none", event="InfoWifiOff", title=_("Turn off Wi-Fi"), device=true, condition=Device:hasWifiToggle()},
toggle_wifi = {category="none", event="ToggleWifi", title=_("Toggle Wi-Fi"), device=true, condition=Device:hasWifiToggle(), separator=true},
toggle_wifi = {category="none", event="ToggleWifi", title=_("Toggle Wi-Fi"), device=true, condition=Device:hasWifiToggle()},
show_network_info = {category="none", event="ShowNetworkInfo", title=_("Show network info"), device=true, separator=true},
suspend = {category="none", event="SuspendEvent", title=_("Suspend"), device=true},
exit = {category="none", event="Exit", title=_("Exit KOReader"), device=true},
restart = {category="none", event="Restart", title=_("Restart KOReader"), device=true, condition=Device:canRestart()},
@ -234,6 +235,7 @@ local dispatcher_menu_order = {
"wifi_on",
"wifi_off",
"toggle_wifi",
"show_network_info",
"show_frontlight_dialog",
"toggle_frontlight",

@ -113,16 +113,32 @@ function NetworkMgr:restoreWifiAsync() end
-- End of device specific methods
function NetworkMgr:toggleWifiOn(complete_callback, long_press)
local toggle_im = InfoMessage:new{
text = _("Turning on Wi-Fi…"),
}
UIManager:show(toggle_im)
UIManager:forceRePaint()
self.wifi_was_on = true
G_reader_settings:makeTrue("wifi_was_on")
self.wifi_toggle_long_press = long_press
self:turnOnWifi(complete_callback)
UIManager:close(toggle_im)
end
function NetworkMgr:toggleWifiOff(complete_callback)
local toggle_im = InfoMessage:new{
text = _("Turning off Wi-Fi…"),
}
UIManager:show(toggle_im)
UIManager:forceRePaint()
self.wifi_was_on = false
G_reader_settings:makeFalse("wifi_was_on")
self:turnOffWifi(complete_callback)
UIManager:close(toggle_im)
end
function NetworkMgr:promptWifiOn(complete_callback, long_press)
@ -481,16 +497,7 @@ function NetworkMgr:getInfoMenuTable()
keep_menu_open = true,
enabled_func = function() return self:isNetworkInfoAvailable() end,
callback = function()
if Device.retrieveNetworkInfo then
UIManager:show(InfoMessage:new{
text = Device:retrieveNetworkInfo(),
})
else
UIManager:show(InfoMessage:new{
text = _("Could not retrieve network info."),
timeout = 3,
})
end
UIManager:broadcastEvent(Event:new("ShowNetworkInfo"))
end
}
end

@ -13,10 +13,11 @@ local NetworkListener = InputContainer:new{}
function NetworkListener:onToggleWifi()
if not NetworkMgr:isWifiOn() then
UIManager:show(InfoMessage:new{
local toggle_im = InfoMessage:new{
text = _("Turning on Wi-Fi…"),
timeout = 1,
})
}
UIManager:show(toggle_im)
UIManager:forceRePaint()
-- NB Normal widgets should use NetworkMgr:promptWifiOn()
-- (or, better yet, the NetworkMgr:beforeWifiAction wrappers: NetworkMgr:runWhenOnline() & co.)
@ -25,12 +26,21 @@ function NetworkListener:onToggleWifi()
UIManager:broadcastEvent(Event:new("NetworkConnected"))
end
NetworkMgr:turnOnWifi(complete_callback)
UIManager:close(toggle_im)
else
local complete_callback = function()
UIManager:broadcastEvent(Event:new("NetworkDisconnected"))
end
local toggle_im = InfoMessage:new{
text = _("Turning off Wi-Fi…"),
}
UIManager:show(toggle_im)
UIManager:forceRePaint()
NetworkMgr:turnOffWifi(complete_callback)
UIManager:close(toggle_im)
UIManager:show(InfoMessage:new{
text = _("Wi-Fi off."),
timeout = 1,
@ -43,8 +53,15 @@ function NetworkListener:onInfoWifiOff()
local complete_callback = function()
UIManager:broadcastEvent(Event:new("NetworkDisconnected"))
end
local toggle_im = InfoMessage:new{
text = _("Turning off Wi-Fi…"),
}
UIManager:show(toggle_im)
UIManager:forceRePaint()
NetworkMgr:turnOffWifi(complete_callback)
UIManager:close(toggle_im)
UIManager:show(InfoMessage:new{
text = _("Wi-Fi off."),
timeout = 1,
@ -53,10 +70,11 @@ end
function NetworkListener:onInfoWifiOn()
if not NetworkMgr:isOnline() then
UIManager:show(InfoMessage:new{
text = _("Enabling wifi…"),
timeout = 1,
})
local toggle_im = InfoMessage:new{
text = _("Enabling Wi-Fi…"),
}
UIManager:show(toggle_im)
UIManager:forceRePaint()
-- NB Normal widgets should use NetworkMgr:promptWifiOn()
-- (or, better yet, the NetworkMgr:beforeWifiAction wrappers: NetworkMgr:runWhenOnline() & co.)
@ -65,6 +83,8 @@ function NetworkListener:onInfoWifiOn()
UIManager:broadcastEvent(Event:new("NetworkConnected"))
end
NetworkMgr:turnOnWifi(complete_callback)
UIManager:close(toggle_im)
else
local info_text
local current_network = NetworkMgr:getCurrentNetwork()
@ -211,4 +231,17 @@ function NetworkListener:onSuspend()
self:onNetworkDisconnected()
end
function NetworkListener:onShowNetworkInfo()
if Device.retrieveNetworkInfo then
UIManager:show(InfoMessage:new{
text = Device:retrieveNetworkInfo(),
})
else
UIManager:show(InfoMessage:new{
text = _("Could not retrieve network info."),
timeout = 3,
})
end
end
return NetworkListener

Loading…
Cancel
Save