network: allow to set a NIC's link from the status bar
This commit is contained in:
@@ -44,10 +44,14 @@ extern "C" {
|
||||
#include <86box/mo.h>
|
||||
#include <86box/sound.h>
|
||||
#include <86box/ui.h>
|
||||
#include <86box/thread.h>
|
||||
#include <86box/network.h>
|
||||
|
||||
};
|
||||
|
||||
#include "qt_newfloppydialog.hpp"
|
||||
#include "qt_util.hpp"
|
||||
#include "qt_deviceconfig.hpp"
|
||||
|
||||
std::shared_ptr<MediaMenu> MediaMenu::ptr;
|
||||
|
||||
@@ -156,6 +160,16 @@ void MediaMenu::refresh(QMenu *parentMenu) {
|
||||
moMenus[i] = menu;
|
||||
moUpdateMenu(i);
|
||||
});
|
||||
|
||||
netMenus.clear();
|
||||
MachineStatus::iterateNIC([this, parentMenu](int i) {
|
||||
auto *menu = parentMenu->addMenu("");
|
||||
netDisconnPos = menu->children().count();
|
||||
auto *action = menu->addAction(tr("&Disconnected"), [i] { network_connect(i, !network_is_connected(i)); config_save(); });
|
||||
action->setCheckable(true);
|
||||
netMenus[i] = menu;
|
||||
nicUpdateMenu(i);
|
||||
});
|
||||
}
|
||||
|
||||
void MediaMenu::cassetteNewImage() {
|
||||
@@ -662,6 +676,30 @@ void MediaMenu::moUpdateMenu(int i) {
|
||||
menu->setTitle(QString::asprintf(tr("MO %i (%ls): %ls").toUtf8().constData(), i + 1, busName.toStdU16String().data(), name.isEmpty() ? tr("(empty)").toStdU16String().data() : name.toStdU16String().data()));
|
||||
}
|
||||
|
||||
void MediaMenu::nicUpdateMenu(int i) {
|
||||
if (!netMenus.contains(i))
|
||||
return;
|
||||
|
||||
QString netType = tr("None");
|
||||
switch (net_cards_conf[i].net_type) {
|
||||
case NET_TYPE_SLIRP:
|
||||
netType = "SLiRP";
|
||||
break;
|
||||
case NET_TYPE_PCAP:
|
||||
netType = "PCAP";
|
||||
break;
|
||||
}
|
||||
|
||||
QString devName = DeviceConfig::DeviceName(network_card_getdevice(net_cards_conf[i].device_num), network_card_get_internal_name(net_cards_conf[i].device_num), 1);
|
||||
|
||||
auto *menu = netMenus[i];
|
||||
auto childs = menu->children();
|
||||
auto *connectedAction = dynamic_cast<QAction*>(childs[netDisconnPos]);
|
||||
connectedAction->setChecked(!network_is_connected(i));
|
||||
|
||||
menu->setTitle(QString::asprintf(tr("NIC %02i (%ls) %ls").toUtf8().constData(), i + 1, netType.toStdU16String().data(), devName.toStdU16String().data()));
|
||||
}
|
||||
|
||||
QString MediaMenu::getMediaOpenDirectory() {
|
||||
QString openDirectory;
|
||||
if (open_dir_usr_path > 0) {
|
||||
|
||||
Reference in New Issue
Block a user