Summary
The desktop GUI (amulegui) toolbar starts with a global Connect/Disconnect
button that toggles both networks at once. This proposal is to remove that
button from the toolbar and relocate its combined connect/disconnect action into
the Networks view, alongside the existing per-network controls.
Current behavior
amulegui (desktop, wxWidgets)
- Toolbar tool
ID_BUTTONCONNECT → handler CamuleDlg::OnBnConnect
(src/amuleDlg.cpp:635). It computes a single disconnect flag from the
aggregate state and applies it to both networks, each gated by its enable
pref: ED2K via serverconnect->ConnectToAnyServer() / Disconnect() /
StopConnectionTry(), Kad via StartKad() / StopKad().
- Label/state (
Connect / Cancel while connecting / Disconnect) is derived
from the aggregate connection state in CamuleDlg::ShowConnectionState()
(src/amuleDlg.cpp:879); the button is disabled if both networks are off or
the IP filter is not ready.
- Per-network controls already exist elsewhere: Kad pane (
src/KadDlg.cpp —
StartKad/StopKad, bootstrap) and Servers pane (src/ServerWnd.cpp ED2K
disconnect, src/ServerListCtrl.cpp connect-to-server).
- The connection state is also already shown in the status bar, so the toolbar
button duplicates status information on top of the toggle action.
amule (core) — the underlying actions
CamuleApp::StartKad() / StopKad() (src/amule.cpp:2616 / :2635).
- Auto-connect on startup is a single flag (
DoAutoConnect(),
/eMule/Autoconnect) that fans out to each enabled network
(src/amule.cpp:1013): ED2K ConnectToAnyServerWhenReady(), Kad
StartKADWhenReady(). Network enablement is independent
(ConnectToED2K / ConnectToKad).
amulecmd (CLI) — already cleanly separated (reference model)
src/TextClient.cpp:1112 registers Connect (both enabled networks, or
Connect IP:Port for a single server) with subcommands Connect ED2K /
Connect Kad, and Disconnect (all connected networks) with Disconnect ED2K / Disconnect Kad.
- The CLI already exposes both the combined action and the per-network actions
as first-class, clearly-named commands. No change needed here — it is the
model the GUI should align to.
Problems
- Low-frequency action in prime real estate. With auto-connect and both
networks enabled by default, most sessions start connected; manual
connect/disconnect is an edge case that does not deserve the first slot in
the toolbar.
- Redundant, alarming status signaling. The button duplicates the
connection state already shown in the status bar, and its disconnected
styling reads as an error/alert when "disconnected" is a normal, harmless
state.
Proposal
- Remove the global Connect/Disconnect button (
ID_BUTTONCONNECT) from the
amulegui toolbar.
- Relocate the combined "connect/disconnect both networks" action into the
Networks view, next to the per-network controls, reusing the existing
OnBnConnect logic and the StartKad/StopKad +
ConnectToAnyServer/Disconnect calls.
- Keep the status bar as the place that reports connection state.
- amulecmd needs no change (its command tree already separates combined and
per-network actions).
- If this change is accepted, the same relocation is applied to the Web UI (the
connect/disconnect button is moved out of the navbar into the Networks page).
References
src/amuleDlg.cpp:635 (OnBnConnect), src/amuleDlg.cpp:879
(ShowConnectionState)
src/amule.cpp:2616 / :2635 (StartKad/StopKad), src/amule.cpp:1013
(auto-connect fan-out)
src/KadDlg.cpp, src/ServerWnd.cpp, src/ServerListCtrl.cpp (per-network
controls)
src/TextClient.cpp:1112 (amulecmd Connect/Disconnect command tree)
@mrjimenez @got3nks this needs some discussion before making the changes. Invite others to the discussion too.
Summary
The desktop GUI (amulegui) toolbar starts with a global Connect/Disconnect
button that toggles both networks at once. This proposal is to remove that
button from the toolbar and relocate its combined connect/disconnect action into
the Networks view, alongside the existing per-network controls.
Current behavior
amulegui (desktop, wxWidgets)
ID_BUTTONCONNECT→ handlerCamuleDlg::OnBnConnect(
src/amuleDlg.cpp:635). It computes a singledisconnectflag from theaggregate state and applies it to both networks, each gated by its enable
pref: ED2K via
serverconnect->ConnectToAnyServer()/Disconnect()/StopConnectionTry(), Kad viaStartKad()/StopKad().Connect/Cancelwhile connecting /Disconnect) is derivedfrom the aggregate connection state in
CamuleDlg::ShowConnectionState()(
src/amuleDlg.cpp:879); the button is disabled if both networks are off orthe IP filter is not ready.
src/KadDlg.cpp—StartKad/StopKad, bootstrap) and Servers pane (
src/ServerWnd.cppED2Kdisconnect,
src/ServerListCtrl.cppconnect-to-server).button duplicates status information on top of the toggle action.
amule (core) — the underlying actions
CamuleApp::StartKad()/StopKad()(src/amule.cpp:2616/:2635).DoAutoConnect(),/eMule/Autoconnect) that fans out to each enabled network(
src/amule.cpp:1013): ED2KConnectToAnyServerWhenReady(), KadStartKADWhenReady(). Network enablement is independent(
ConnectToED2K/ConnectToKad).amulecmd (CLI) — already cleanly separated (reference model)
src/TextClient.cpp:1112registersConnect(both enabled networks, orConnect IP:Portfor a single server) with subcommandsConnect ED2K/Connect Kad, andDisconnect(all connected networks) withDisconnect ED2K/Disconnect Kad.as first-class, clearly-named commands. No change needed here — it is the
model the GUI should align to.
Problems
networks enabled by default, most sessions start connected; manual
connect/disconnect is an edge case that does not deserve the first slot in
the toolbar.
connection state already shown in the status bar, and its disconnected
styling reads as an error/alert when "disconnected" is a normal, harmless
state.
Proposal
ID_BUTTONCONNECT) from theamulegui toolbar.
Networks view, next to the per-network controls, reusing the existing
OnBnConnectlogic and theStartKad/StopKad+ConnectToAnyServer/Disconnectcalls.per-network actions).
connect/disconnect button is moved out of the navbar into the Networks page).
References
src/amuleDlg.cpp:635(OnBnConnect),src/amuleDlg.cpp:879(
ShowConnectionState)src/amule.cpp:2616/:2635(StartKad/StopKad),src/amule.cpp:1013(auto-connect fan-out)
src/KadDlg.cpp,src/ServerWnd.cpp,src/ServerListCtrl.cpp(per-networkcontrols)
src/TextClient.cpp:1112(amulecmd Connect/Disconnect command tree)@mrjimenez @got3nks this needs some discussion before making the changes. Invite others to the discussion too.