Skip to content

[GUI] Remove the global Connect/Disconnect button from the amulegui toolbar and move it into the Networks view #402

Description

@ngosang

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

  1. 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.
  2. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions