/* Removes selected network interface: */ void UIGlobalSettingsNetwork::sltDelInterface() { /* Get interface item: */ UIHostInterfaceItem *pItem = static_cast<UIHostInterfaceItem*>(m_pInterfacesTree->currentItem()); AssertMsg(pItem, ("Current item should present!\n")); /* Get interface name: */ QString strInterfaceName(pItem->name()); /* Asking user about deleting selected network interface: */ if (msgCenter().confirmDeletingHostInterface(strInterfaceName, this) == QIMessageBox::Cancel) return; /* Prepare useful variables: */ CVirtualBox vbox = vboxGlobal().virtualBox(); CHost host = vboxGlobal().host(); /* Find corresponding interface: */ const CHostNetworkInterface &iface = host.FindHostNetworkInterfaceByName(strInterfaceName); /* Remove DHCP server first: */ CDHCPServer dhcp = vboxGlobal().virtualBox().FindDHCPServerByNetworkName(iface.GetNetworkName()); if (!dhcp.isNull()) vbox.RemoveDHCPServer(dhcp); /* Remove interface finally: */ CProgress progress = host.RemoveHostOnlyNetworkInterface(iface.GetId()); if (host.isOk()) { msgCenter().showModalProgressDialog(progress, tr("Networking"), ":/nw_32px.png", this, true, 0); if (progress.GetResultCode() == 0) { /* Remove list item: */ removeListItem(pItem); /* Remove cache item: */ removeCacheItem(strInterfaceName); } else msgCenter().cannotRemoveHostInterface(progress, iface, this); } else msgCenter().cannotRemoveHostInterface(host, iface, this); }
void UIHostNetworkManagerWidget::sltRemoveHostNetwork() { /* Get network item: */ UIItemHostNetwork *pItem = static_cast<UIItemHostNetwork*>(m_pTreeWidget->currentItem()); AssertMsgReturnVoid(pItem, ("Current item must not be null!\n")); /* Get interface name: */ const QString strInterfaceName(pItem->name()); /* Confirm host network removal: */ if (!msgCenter().confirmHostOnlyInterfaceRemoval(strInterfaceName, this)) return; /* Get host for further activities: */ CHost comHost = vboxGlobal().host(); /* Find corresponding interface: */ const CHostNetworkInterface &comInterface = comHost.FindHostNetworkInterfaceByName(strInterfaceName); /* Show error message if necessary: */ if (!comHost.isOk() || comInterface.isNull()) msgCenter().cannotFindHostNetworkInterface(comHost, strInterfaceName, this); else { /* Get network name for further activities: */ QString strNetworkName; if (comInterface.isOk()) strNetworkName = comInterface.GetNetworkName(); /* Get interface id for further activities: */ QUuid uInterfaceId; if (comInterface.isOk()) uInterfaceId = comInterface.GetId(); /* Show error message if necessary: */ if (!comInterface.isOk()) msgCenter().cannotAcquireHostNetworkInterfaceParameter(comInterface, this); else { /* Get VBox for further activities: */ CVirtualBox comVBox = vboxGlobal().virtualBox(); /* Find corresponding DHCP server: */ const CDHCPServer &comServer = comVBox.FindDHCPServerByNetworkName(strNetworkName); if (comVBox.isOk() && comServer.isNotNull()) { /* Remove server if any: */ comVBox.RemoveDHCPServer(comServer); /* Show error message if necessary: */ if (!comVBox.isOk()) msgCenter().cannotRemoveDHCPServer(comVBox, strInterfaceName, this); } /* Remove interface finally: */ CProgress progress = comHost.RemoveHostOnlyNetworkInterface(uInterfaceId); /* Show error message if necessary: */ if (!comHost.isOk() || progress.isNull()) msgCenter().cannotRemoveHostNetworkInterface(comHost, strInterfaceName, this); else { /* Show interface removal progress: */ msgCenter().showModalProgressDialog(progress, UIHostNetworkManager::tr("Removing network..."), ":/progress_network_interface_90px.png", this, 0); /* Show error message if necessary: */ if (!progress.isOk() || progress.GetResultCode() != 0) return msgCenter().cannotRemoveHostNetworkInterface(progress, strInterfaceName, this); else { /* Remove interface from the tree: */ delete pItem; /* Adjust tree-widget: */ sltAdjustTreeWidget(); } } } } }