Index: /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 87315)
+++ /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 87316)
@@ -863,7 +863,4 @@
 	src/settings/global/UIGlobalSettingsLanguage.h \
 	src/settings/global/UIGlobalSettingsDisplay.h \
-	src/settings/global/UIGlobalSettingsNetwork.h \
-	src/settings/global/UIGlobalSettingsNetworkDetailsNAT.h \
-	src/settings/global/UIGlobalSettingsPortForwardingDlg.h \
 	src/settings/machine/UIMachineSettingsAudio.h \
 	src/settings/machine/UIMachineSettingsDisplay.h \
@@ -1008,5 +1005,4 @@
 	src/settings/editors/UIShortcutConfigurationEditor.cpp \
 	src/settings/global/UIGlobalSettingsExtension.cpp \
-	src/settings/global/UIGlobalSettingsNetwork.cpp \
 	src/settings/machine/UIMachineSettingsNetwork.cpp \
 	src/settings/machine/UIMachineSettingsSerial.cpp \
@@ -1395,7 +1391,4 @@
 	src/settings/global/UIGlobalSettingsLanguage.cpp \
 	src/settings/global/UIGlobalSettingsDisplay.cpp \
-	src/settings/global/UIGlobalSettingsNetwork.cpp \
-	src/settings/global/UIGlobalSettingsNetworkDetailsNAT.cpp \
-	src/settings/global/UIGlobalSettingsPortForwardingDlg.cpp \
 	src/settings/machine/UIMachineSettingsAudio.cpp \
 	src/settings/machine/UIMachineSettingsDisplay.cpp \
Index: /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 87315)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 87316)
@@ -1867,5 +1867,4 @@
         case GlobalSettingsPageType_Language:   strResult = "Language"; break;
         case GlobalSettingsPageType_Display:    strResult = "Display"; break;
-        case GlobalSettingsPageType_Network:    strResult = "Network"; break;
         case GlobalSettingsPageType_Extensions: strResult = "Extensions"; break;
 #ifdef VBOX_GUI_WITH_NETWORK_MANAGER
@@ -1894,5 +1893,4 @@
     keys << "Language";   values << GlobalSettingsPageType_Language;
     keys << "Display";    values << GlobalSettingsPageType_Display;
-    keys << "Network";    values << GlobalSettingsPageType_Network;
     keys << "Extensions"; values << GlobalSettingsPageType_Extensions;
 #ifdef VBOX_GUI_WITH_NETWORK_MANAGER
@@ -1918,5 +1916,4 @@
         case GlobalSettingsPageType_Language:   return UIIconPool::pixmap(":/site_warning_16px.png");
         case GlobalSettingsPageType_Display:    return UIIconPool::pixmap(":/vrdp_warning_16px.png");
-        case GlobalSettingsPageType_Network:    return UIIconPool::pixmap(":/nw_warning_16px.png");
         case GlobalSettingsPageType_Extensions: return UIIconPool::pixmap(":/extension_pack_warning_16px.png");
 #ifdef VBOX_GUI_WITH_NETWORK_MANAGER
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 87315)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 87316)
@@ -824,5 +824,4 @@
     GlobalSettingsPageType_Language,
     GlobalSettingsPageType_Display,
-    GlobalSettingsPageType_Network,
     GlobalSettingsPageType_Extensions,
 #ifdef VBOX_GUI_WITH_NETWORK_MANAGER
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 87315)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 87316)
@@ -36,5 +36,4 @@
 #include "UIGlobalSettingsInput.h"
 #include "UIGlobalSettingsLanguage.h"
-#include "UIGlobalSettingsNetwork.h"
 #ifdef VBOX_GUI_WITH_NETWORK_MANAGER
 # include "UIGlobalSettingsProxy.h"
@@ -101,7 +100,4 @@
     m_pSelector->setItemText(GlobalSettingsPageType_Display, tr("Display"));
 
-    /* Network page: */
-    m_pSelector->setItemText(GlobalSettingsPageType_Network, tr("Network"));
-
     /* Extension page: */
     m_pSelector->setItemText(GlobalSettingsPageType_Extensions, tr("Extensions"));
@@ -236,13 +232,4 @@
                     addItem(":/vrdp_32px.png", ":/vrdp_24px.png", ":/vrdp_16px.png",
                             iPageIndex, "#display", pSettingsPage);
-                    addPageHelpKeyword(iPageIndex, "globalsettings");
-                    break;
-                }
-                /* Network page: */
-                case GlobalSettingsPageType_Network:
-                {
-                    pSettingsPage = new UIGlobalSettingsNetwork;
-                    addItem(":/nw_32px.png", ":/nw_24px.png", ":/nw_16px.png",
-                            iPageIndex, "#network", pSettingsPage);
                     addPageHelpKeyword(iPageIndex, "globalsettings");
                     break;
@@ -319,11 +306,4 @@
     switch (iPageId)
     {
-        case GlobalSettingsPageType_Network:
-        {
-#ifndef VBOX_WITH_NETFLT
-            return false;
-#endif
-            break;
-        }
         case GlobalSettingsPageType_Extensions:
             return !uiCommon().virtualBox().GetExtensionPackManager().isNull();
Index: unk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetwork.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetwork.cpp	(revision 87315)
+++ 	(revision )
@@ -1,1036 +1,0 @@
-/* $Id$ */
-/** @file
- * VBox Qt GUI - UIGlobalSettingsNetwork class implementation.
- */
-
-/*
- * Copyright (C) 2009-2020 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-/* Qt includes: */
-#include <QHBoxLayout>
-#include <QHeaderView>
-#include <QMenu>
-
-/* GUI includes: */
-#include "QILabelSeparator.h"
-#include "QITreeWidget.h"
-#include "UICommon.h"
-#include "UIConverter.h"
-#include "UIErrorString.h"
-#include "UIGlobalSettingsNetwork.h"
-#include "UIGlobalSettingsNetworkDetailsNAT.h"
-#include "UIIconPool.h"
-#include "UIMessageCenter.h"
-#include "QIToolBar.h"
-
-/* COM includes: */
-#include "CDHCPServer.h"
-#include "CNATNetwork.h"
-#include "CHostNetworkInterface.h"
-
-/* Other VBox includes: */
-#include <iprt/cidr.h>
-
-
-/** Global settings: Network page data structure. */
-struct UIDataSettingsGlobalNetwork
-{
-    /** Constructs data. */
-    UIDataSettingsGlobalNetwork() {}
-
-    /** Returns whether the @a other passed data is equal to this one. */
-    bool operator==(const UIDataSettingsGlobalNetwork & /* other */) const { return true; }
-    /** Returns whether the @a other passed data is different from this one. */
-    bool operator!=(const UIDataSettingsGlobalNetwork & /* other */) const { return false; }
-};
-
-
-/** Global settings: Network page: NAT network tree-widget item. */
-class UIItemNetworkNAT : public QITreeWidgetItem, public UIDataSettingsGlobalNetworkNAT
-{
-    Q_OBJECT;
-
-public:
-
-    /** Constructs item. */
-    UIItemNetworkNAT();
-
-    /** Updates item fields from data. */
-    void updateFields();
-    /** Updates item data from fields. */
-    void updateData();
-
-    /** Performs validation, updates @a messages list if something is wrong. */
-    bool validate(UIValidationMessage &messages);
-
-    /** Returns item name. */
-    QString name() const { return m_strName; }
-    /** Returns new item name. */
-    QString newName() const { return m_strNewName; }
-
-    /** Returns IPv4 port forwarding rules. */
-    const UIPortForwardingDataList &ipv4rules() const { return m_ipv4rules; }
-    /** Defines IPv4 port forwarding rules. */
-    void setIpv4rules(const UIPortForwardingDataList &ipv4rules) { m_ipv4rules = ipv4rules; }
-    /** Returns IPv6 port forwarding rules. */
-    const UIPortForwardingDataList &ipv6rules() const { return m_ipv6rules; }
-    /** Defines IPv6 port forwarding rules. */
-    void setIpv6rules(const UIPortForwardingDataList &ipv6rules) { m_ipv6rules = ipv6rules; }
-
-protected:
-
-    /** Returns default text. */
-    virtual QString defaultText() const /* override */;
-
-private:
-
-    /** Holds IPv4 port forwarding rules. */
-    UIPortForwardingDataList m_ipv4rules;
-    /** Holds IPv6 port forwarding rules. */
-    UIPortForwardingDataList m_ipv6rules;
-};
-
-
-/*********************************************************************************************************************************
-*   Class UIItemNetworkNAT implementation.                                                                                       *
-*********************************************************************************************************************************/
-
-UIItemNetworkNAT::UIItemNetworkNAT()
-    : QITreeWidgetItem()
-{
-}
-
-void UIItemNetworkNAT::updateFields()
-{
-    /* Compose item name/tool-tip: */
-    const QString strHeader("<tr><td><nobr>%1:&nbsp;</nobr></td><td><nobr>%2</nobr></td></tr>");
-    const QString strSubHeader("<tr><td><nobr>&nbsp;&nbsp;%1:&nbsp;</nobr></td><td><nobr>%2</nobr></td></tr>");
-    QString strToolTip;
-
-    /* Item name was not changed: */
-    setCheckState(0, m_fEnabled ? Qt::Checked : Qt::Unchecked);
-    if (m_strNewName == m_strName)
-    {
-        /* Just use the old one: */
-        setText(1, m_strName);
-        strToolTip += strHeader.arg(tr("Network Name"), m_strName);
-    }
-    /* If name was changed: */
-    else
-    {
-        /* We should explain that: */
-        const QString oldName = m_strName;
-        const QString newName = m_strNewName.isEmpty() ? tr("[empty]") : m_strNewName;
-        setText(1, tr("%1 (renamed from %2)").arg(newName, oldName));
-        strToolTip += strHeader.arg(tr("Old Network Name"), m_strName);
-        strToolTip += strHeader.arg(tr("New Network Name"), m_strNewName);
-    }
-
-    /* Other tool-tip information: */
-    strToolTip += strHeader.arg(tr("Network CIDR"), m_strCIDR);
-    strToolTip += strHeader.arg(tr("Supports DHCP"),
-                                m_fSupportsDHCP ? tr("yes") : tr("no"));
-    strToolTip += strHeader.arg(tr("Supports IPv6"),
-                                m_fSupportsIPv6 ? tr("yes") : tr("no"));
-    if (m_fSupportsIPv6 && m_fAdvertiseDefaultIPv6Route)
-        strToolTip += strSubHeader.arg(tr("Default IPv6 route"), tr("yes"));
-
-    /* Assign tool-tip finally: */
-    setToolTip(1, strToolTip);
-}
-
-void UIItemNetworkNAT::updateData()
-{
-    /* Update data: */
-    m_fEnabled = checkState(0) == Qt::Checked;
-}
-
-bool UIItemNetworkNAT::validate(UIValidationMessage &message)
-{
-    /* Pass by default: */
-    bool fPass = true;
-
-    /* NAT network name validation: */
-    bool fNameValid = true;
-    if (m_strNewName.isEmpty())
-    {
-        /* Emptiness validation: */
-        message.second << tr("No new name specified for the NAT network previously called <b>%1</b>.").arg(m_strName);
-        fNameValid = false;
-        fPass = false;
-    }
-
-    /* NAT network CIDR validation: */
-    if (m_strCIDR.isEmpty())
-    {
-        /* Emptiness validation: */
-        if (fNameValid)
-            message.second << tr("No CIDR specified for the NAT network <b>%1</b>.").arg(m_strNewName);
-        else
-            message.second << tr("No CIDR specified for the NAT network previously called <b>%1</b>.").arg(m_strName);
-        fPass = false;
-    }
-    else
-    {
-        /* Correctness validation: */
-        RTNETADDRIPV4 network, mask;
-        int rc = RTCidrStrToIPv4(m_strCIDR.toUtf8().constData(), &network, &mask);
-        if (RT_FAILURE(rc))
-        {
-            if (fNameValid)
-                message.second << tr("Invalid CIDR specified (<i>%1</i>) for the NAT network <b>%2</b>.")
-                                                              .arg(m_strCIDR, m_strNewName);
-            else
-                message.second << tr("Invalid CIDR specified (<i>%1</i>) for the NAT network previously called <b>%2</b>.")
-                                                              .arg(m_strCIDR, m_strName);
-            fPass = false;
-        }
-    }
-
-    /* Return result: */
-    return fPass;
-}
-
-QString UIItemNetworkNAT::defaultText() const
-{
-    return m_fEnabled ?
-           tr("%1, %2", "col.2 text, col.1 name")
-             .arg(text(1))
-             .arg(parentTree()->headerItem()->text(0)) :
-           tr("%1",     "col.2 text")
-             .arg(text(1));
-}
-
-
-/*********************************************************************************************************************************
-*   Class UIGlobalSettingsNetwork implementation.                                                                                *
-*********************************************************************************************************************************/
-
-UIGlobalSettingsNetwork::UIGlobalSettingsNetwork()
-    : m_pCache(0)
-    , m_pLabelSeparator(0)
-    , m_pLayoutNATNetwork(0)
-    , m_pTreeWidgetNATNetwork(0)
-    , m_pToolbarNATNetwork(0)
-    , m_pActionAdd(0)
-    , m_pActionRemove(0)
-    , m_pActionEdit(0)
-{
-    /* Prepare: */
-    prepare();
-}
-
-UIGlobalSettingsNetwork::~UIGlobalSettingsNetwork()
-{
-    /* Cleanup: */
-    cleanup();
-}
-
-void UIGlobalSettingsNetwork::loadToCacheFrom(QVariant &data)
-{
-    /* Fetch data to properties: */
-    UISettingsPageGlobal::fetchData(data);
-
-    /* Clear cache initially: */
-    m_pCache->clear();
-
-    /* Prepare old network data: */
-    UIDataSettingsGlobalNetwork oldNetworkData;
-
-    /* Gather old network data: */
-    foreach (const CNATNetwork &network, uiCommon().virtualBox().GetNATNetworks())
-        loadToCacheFromNATNetwork(network, m_pCache->child(network.GetNetworkName()));
-
-    /* Cache old network data: */
-    m_pCache->cacheInitialData(oldNetworkData);
-
-    /* Upload properties to data: */
-    UISettingsPageGlobal::uploadData(data);
-}
-
-void UIGlobalSettingsNetwork::getFromCache()
-{
-    /* Load old network data from the cache: */
-    for (int i = 0; i < m_pCache->childCount(); ++i)
-        createTreeWidgetItemForNATNetwork(m_pCache->child(i));
-    m_pTreeWidgetNATNetwork->sortByColumn(1, Qt::AscendingOrder);
-    m_pTreeWidgetNATNetwork->setCurrentItem(m_pTreeWidgetNATNetwork->topLevelItem(0));
-    sltHandleCurrentItemChangeNATNetwork();
-
-    /* Revalidate: */
-    revalidate();
-}
-
-void UIGlobalSettingsNetwork::putToCache()
-{
-    /* Prepare new network data: */
-    UIDataSettingsGlobalNetwork newNetworkData;
-
-    /* Gather new network data: */
-    for (int i = 0; i < m_pTreeWidgetNATNetwork->topLevelItemCount(); ++i)
-    {
-        const UIItemNetworkNAT *pItem = static_cast<UIItemNetworkNAT*>(m_pTreeWidgetNATNetwork->topLevelItem(i));
-        m_pCache->child(pItem->m_strName).cacheCurrentData(*pItem);
-        foreach (const UIDataPortForwardingRule &rule, pItem->ipv4rules())
-            m_pCache->child(pItem->m_strName).child1(rule.name).cacheCurrentData(rule);
-        foreach (const UIDataPortForwardingRule &rule, pItem->ipv6rules())
-            m_pCache->child(pItem->m_strName).child2(rule.name).cacheCurrentData(rule);
-    }
-
-    /* Cache new network data: */
-    m_pCache->cacheCurrentData(newNetworkData);
-}
-
-void UIGlobalSettingsNetwork::saveFromCacheTo(QVariant &data)
-{
-    /* Fetch data to properties: */
-    UISettingsPageGlobal::fetchData(data);
-
-    /* Update network data and failing state: */
-    setFailed(!saveNetworkData());
-
-    /* Upload properties to data: */
-    UISettingsPageGlobal::uploadData(data);
-}
-
-bool UIGlobalSettingsNetwork::validate(QList<UIValidationMessage> &messages)
-{
-    /* Pass by default: */
-    bool fPass = true;
-
-    /* Validate NAT network items: */
-    {
-        /* Prepare message: */
-        UIValidationMessage message;
-
-        /* Validate items first: */
-        for (int i = 0; i < m_pTreeWidgetNATNetwork->topLevelItemCount(); ++i)
-        {
-            UIItemNetworkNAT *pItem = static_cast<UIItemNetworkNAT*>(m_pTreeWidgetNATNetwork->topLevelItem(i));
-            if (!pItem->validate(message))
-                fPass = false;
-        }
-
-        /* And make sure item names are unique: */
-        QList<QString> names;
-        for (int iItemIndex = 0; iItemIndex < m_pTreeWidgetNATNetwork->topLevelItemCount(); ++iItemIndex)
-        {
-            UIItemNetworkNAT *pItem = static_cast<UIItemNetworkNAT*>(m_pTreeWidgetNATNetwork->topLevelItem(iItemIndex));
-            const QString strItemName(pItem->newName());
-            if (strItemName.isEmpty())
-                continue;
-            if (!names.contains(strItemName))
-                names << strItemName;
-            else
-            {
-                message.second << UIGlobalSettingsNetwork::tr("The name <b>%1</b> is being used for several NAT networks.")
-                                                              .arg(strItemName);
-                fPass = false;
-            }
-        }
-
-        /* Serialize message: */
-        if (!message.second.isEmpty())
-            messages << message;
-    }
-
-    /* Return result: */
-    return fPass;
-}
-
-void UIGlobalSettingsNetwork::retranslateUi()
-{
-    m_pLabelSeparator->setText(tr("&NAT Networks"));
-    m_pTreeWidgetNATNetwork->setWhatsThis(tr("Lists all available NAT networks."));
-
-    /* Translate tree-widget columns: */
-    m_pTreeWidgetNATNetwork->setHeaderLabels(QStringList()
-                                       << tr("Active", "NAT network")
-                                       << tr("Name"));
-
-    /* Translate action text: */
-    m_pActionAdd->setText(tr("Add NAT Network"));
-    m_pActionRemove->setText(tr("Remove NAT Network"));
-    m_pActionEdit->setText(tr("Edit NAT Network"));
-
-    m_pActionAdd->setWhatsThis(tr("Adds new NAT network."));
-    m_pActionRemove->setWhatsThis(tr("Removes selected NAT network."));
-    m_pActionEdit->setWhatsThis(tr("Edits selected NAT network."));
-
-    m_pActionAdd->setToolTip(m_pActionAdd->whatsThis());
-    m_pActionRemove->setToolTip(m_pActionRemove->whatsThis());
-    m_pActionEdit->setToolTip(m_pActionEdit->whatsThis());
-}
-
-void UIGlobalSettingsNetwork::sltAddNATNetwork()
-{
-    /* Compose a set of busy names: */
-    QSet<QString> names;
-    for (int i = 0; i < m_pTreeWidgetNATNetwork->topLevelItemCount(); ++i)
-        names << static_cast<UIItemNetworkNAT*>(m_pTreeWidgetNATNetwork->topLevelItem(i))->name();
-    /* Compose a map of busy indexes: */
-    QMap<int, bool> presence;
-    const QString strNameTemplate("NatNetwork%1");
-    const QRegExp regExp(strNameTemplate.arg("([\\d]*)"));
-    foreach (const QString &strName, names)
-        if (regExp.indexIn(strName) != -1)
-            presence[regExp.cap(1).toInt()] = true;
-    /* Search for a minimum index: */
-    int iMinimumIndex = 0;
-    for (int i = 0; !presence.isEmpty() && i <= presence.lastKey() + 1; ++i)
-        if (!presence.contains(i))
-        {
-            iMinimumIndex = i;
-            break;
-        }
-
-    /* Compose resulting index and name: */
-    const QString strNetworkIndex(iMinimumIndex == 0 ? QString() : QString::number(iMinimumIndex));
-    const QString strNetworkName = strNameTemplate.arg(strNetworkIndex);
-
-    /* Compose new item data: */
-    UIDataSettingsGlobalNetworkNAT data;
-    data.m_fEnabled = true;
-    data.m_strName = strNetworkName;
-    data.m_strNewName = strNetworkName;
-    data.m_strCIDR = "10.0.2.0/24";
-    data.m_fSupportsDHCP = true;
-
-    /* Create tree-widget item: */
-    createTreeWidgetItemForNATNetwork(data, UIPortForwardingDataList(), UIPortForwardingDataList(), true);
-    m_pTreeWidgetNATNetwork->sortByColumn(1, Qt::AscendingOrder);
-}
-
-void UIGlobalSettingsNetwork::sltRemoveNATNetwork()
-{
-    /* Get network item: */
-    UIItemNetworkNAT *pItem = static_cast<UIItemNetworkNAT*>(m_pTreeWidgetNATNetwork->currentItem());
-    AssertPtrReturnVoid(pItem);
-
-    /* Confirm network removal: */
-    if (!msgCenter().confirmNATNetworkRemoval(pItem->name(), this))
-        return;
-
-    /* Remove tree-widget item: */
-    removeTreeWidgetItemOfNATNetwork(pItem);
-}
-
-void UIGlobalSettingsNetwork::sltEditNATNetwork()
-{
-    /* Get network item: */
-    UIItemNetworkNAT *pItem = static_cast<UIItemNetworkNAT*>(m_pTreeWidgetNATNetwork->currentItem());
-    AssertPtrReturnVoid(pItem);
-
-    /* Edit current item data: */
-    UIDataSettingsGlobalNetworkNAT data = *pItem;
-    UIPortForwardingDataList ipv4rules = pItem->ipv4rules();
-    UIPortForwardingDataList ipv6rules = pItem->ipv6rules();
-    UIGlobalSettingsNetworkDetailsNAT details(this, data, ipv4rules, ipv6rules);
-    if (details.exec() == QDialog::Accepted)
-    {
-        /* Put data back: */
-        pItem->UIDataSettingsGlobalNetworkNAT::operator=(data);
-        pItem->setIpv4rules(ipv4rules);
-        pItem->setIpv6rules(ipv6rules);
-        pItem->updateFields();
-        sltHandleCurrentItemChangeNATNetwork();
-        /* Revalidate: */
-        revalidate();
-    }
-}
-
-void UIGlobalSettingsNetwork::sltHandleItemChangeNATNetwork(QTreeWidgetItem *pChangedItem)
-{
-    /* Get network item: */
-    UIItemNetworkNAT *pItem = static_cast<UIItemNetworkNAT*>(pChangedItem);
-    AssertPtrReturnVoid(pItem);
-
-    /* Update item data: */
-    pItem->updateData();
-}
-
-void UIGlobalSettingsNetwork::sltHandleCurrentItemChangeNATNetwork()
-{
-    /* Get current item: */
-    UIItemNetworkNAT *pItem = static_cast<UIItemNetworkNAT*>(m_pTreeWidgetNATNetwork->currentItem());
-
-    /* Update availability: */
-    m_pActionRemove->setEnabled(pItem);
-    m_pActionEdit->setEnabled(pItem);
-}
-
-void UIGlobalSettingsNetwork::sltHandleContextMenuRequestNATNetwork(const QPoint &position)
-{
-    /* Compose temporary context-menu: */
-    QMenu menu;
-    if (m_pTreeWidgetNATNetwork->itemAt(position))
-    {
-        menu.addAction(m_pActionEdit);
-        menu.addAction(m_pActionRemove);
-    }
-    else
-    {
-        menu.addAction(m_pActionAdd);
-    }
-    /* And show it: */
-    menu.exec(m_pTreeWidgetNATNetwork->mapToGlobal(position));
-}
-
-void UIGlobalSettingsNetwork::prepare()
-{
-    /* Prepare cache: */
-    m_pCache = new UISettingsCacheGlobalNetwork;
-    AssertPtrReturnVoid(m_pCache);
-
-    /* Prepare everything: */
-    prepareWidgets();
-    prepareConnections();
-
-    /* Apply language settings: */
-    retranslateUi();
-}
-
-void UIGlobalSettingsNetwork::prepareWidgets()
-{
-    /* Prepare main layout: */
-    QVBoxLayout *pLayoutMain = new QVBoxLayout(this);
-    if (pLayoutMain)
-    {
-        pLayoutMain->setContentsMargins(0, 0, 0, 0);
-
-        /* Prepare separator: */
-        m_pLabelSeparator = new QILabelSeparator(this);
-        if (m_pLabelSeparator)
-            pLayoutMain->addWidget(m_pLabelSeparator);
-
-        /* Prepare NAT network layout: */
-        m_pLayoutNATNetwork = new QHBoxLayout;
-        if (m_pLayoutNATNetwork)
-        {
-            m_pLayoutNATNetwork->setSpacing(3);
-
-            /* Prepare NAT network tree-widget: */
-            prepareNATNetworkTreeWidget();
-            /* Prepare NAT network toolbar: */
-            prepareNATNetworkToolbar();
-
-            pLayoutMain->addLayout(m_pLayoutNATNetwork);
-        }
-    }
-}
-
-void UIGlobalSettingsNetwork::prepareNATNetworkTreeWidget()
-{
-    /* Prepare NAT network tree-widget: */
-    m_pTreeWidgetNATNetwork = new QITreeWidget(this);
-    if (m_pTreeWidgetNATNetwork)
-    {
-        if (m_pLabelSeparator)
-            m_pLabelSeparator->setBuddy(m_pTreeWidgetNATNetwork);
-        m_pTreeWidgetNATNetwork->setColumnCount(2);
-        m_pTreeWidgetNATNetwork->setRootIsDecorated(false);
-        m_pTreeWidgetNATNetwork->header()->setStretchLastSection(false);
-        m_pTreeWidgetNATNetwork->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
-        m_pTreeWidgetNATNetwork->header()->setSectionResizeMode(1, QHeaderView::Stretch);
-        m_pTreeWidgetNATNetwork->setContextMenuPolicy(Qt::CustomContextMenu);
-
-        m_pLayoutNATNetwork->addWidget(m_pTreeWidgetNATNetwork);
-    }
-}
-
-void UIGlobalSettingsNetwork::prepareNATNetworkToolbar()
-{
-    /* Prepare NAT network toolbar: */
-    m_pToolbarNATNetwork = new QIToolBar(this);
-    if (m_pToolbarNATNetwork)
-    {
-        const int iIconMetric = QApplication::style()->pixelMetric(QStyle::PM_SmallIconSize);
-        m_pToolbarNATNetwork->setIconSize(QSize(iIconMetric, iIconMetric));
-        m_pToolbarNATNetwork->setOrientation(Qt::Vertical);
-
-        /* Prepare 'add NAT network' action: */
-        m_pActionAdd = m_pToolbarNATNetwork->addAction(UIIconPool::iconSet(":/host_iface_add_16px.png",
-                                                                           ":/host_iface_add_disabled_16px.png"),
-                                                       QString(), this, SLOT(sltAddNATNetwork()));
-        if (m_pActionAdd)
-            m_pActionAdd->setShortcuts(QList<QKeySequence>() << QKeySequence("Ins") << QKeySequence("Ctrl+N"));
-
-        /* Prepare 'remove NAT network' action: */
-        m_pActionRemove = m_pToolbarNATNetwork->addAction(UIIconPool::iconSet(":/host_iface_remove_16px.png",
-                                                                              ":/host_iface_remove_disabled_16px.png"),
-                                                          QString(), this, SLOT(sltRemoveNATNetwork()));
-        if (m_pActionRemove)
-            m_pActionRemove->setShortcuts(QList<QKeySequence>() << QKeySequence("Del") << QKeySequence("Ctrl+R"));
-
-        /* Prepare 'edit NAT network' action: */
-        m_pActionEdit = m_pToolbarNATNetwork->addAction(UIIconPool::iconSet(":/host_iface_edit_16px.png",
-                                                                            ":/host_iface_edit_disabled_16px.png"),
-                                                        QString(), this, SLOT(sltEditNATNetwork()));
-        if (m_pActionEdit)
-            m_pActionEdit->setShortcuts(QList<QKeySequence>() << QKeySequence("Space") << QKeySequence("F2"));
-
-        m_pLayoutNATNetwork->addWidget(m_pToolbarNATNetwork);
-    }
-}
-
-void UIGlobalSettingsNetwork::prepareConnections()
-{
-    /* Configure NAT network connections: */
-    connect(m_pTreeWidgetNATNetwork, &QITreeWidget::currentItemChanged,
-            this, &UIGlobalSettingsNetwork::sltHandleCurrentItemChangeNATNetwork);
-    connect(m_pTreeWidgetNATNetwork, &QITreeWidget::customContextMenuRequested,
-            this, &UIGlobalSettingsNetwork::sltHandleContextMenuRequestNATNetwork);
-    connect(m_pTreeWidgetNATNetwork, &QITreeWidget::itemDoubleClicked,
-            this, &UIGlobalSettingsNetwork::sltEditNATNetwork);
-    connect(m_pTreeWidgetNATNetwork, &QITreeWidget::itemChanged,
-            this, &UIGlobalSettingsNetwork::sltHandleItemChangeNATNetwork);
-}
-
-void UIGlobalSettingsNetwork::cleanup()
-{
-    /* Cleanup cache: */
-    delete m_pCache;
-    m_pCache = 0;
-}
-
-bool UIGlobalSettingsNetwork::saveNetworkData()
-{
-    /* Prepare result: */
-    bool fSuccess = true;
-    /* Save network settings from the cache: */
-    if (fSuccess && m_pCache->wasChanged())
-    {
-        /* For each NAT network ('removing' step): */
-        // We need to separately remove NAT networks first because
-        // there could be name collisions with the existing NAT networks.
-        for (int i = 0; fSuccess && i < m_pCache->childCount(); ++i)
-        {
-            /* Get NAT network cache: */
-            const UISettingsCacheGlobalNetworkNAT &cache = m_pCache->child(i);
-
-            /* Remove NAT network marked for 'remove' or 'update' (if it can't be updated): */
-            if (cache.wasRemoved() || (cache.wasUpdated() && !isNetworkCouldBeUpdated(cache)))
-                fSuccess = removeNATNetwork(cache);
-        }
-        /* For each NAT network ('creating' step): */
-        for (int i = 0; fSuccess && i < m_pCache->childCount(); ++i)
-        {
-            /* Get NAT network cache: */
-            const UISettingsCacheGlobalNetworkNAT &cache = m_pCache->child(i);
-
-            /* Create NAT network marked for 'create' or 'update' (if it can't be updated): */
-            if (cache.wasCreated() || (cache.wasUpdated() && !isNetworkCouldBeUpdated(cache)))
-                fSuccess = createNATNetwork(cache);
-
-            else
-
-            /* Update NAT network marked for 'update' (if it can be updated): */
-            if (cache.wasUpdated() && isNetworkCouldBeUpdated(cache))
-                fSuccess = updateNATNetwork(cache);
-        }
-    }
-    /* Return result: */
-    return fSuccess;
-}
-
-void UIGlobalSettingsNetwork::loadToCacheFromNATNetwork(const CNATNetwork &network, UISettingsCacheGlobalNetworkNAT &cache)
-{
-    /* Prepare old NAT data: */
-    UIDataSettingsGlobalNetworkNAT oldNATData;
-
-    /* Load NAT network settings: */
-    oldNATData.m_fEnabled = network.GetEnabled();
-    oldNATData.m_strName = network.GetNetworkName();
-    oldNATData.m_strNewName = oldNATData.m_strName;
-    oldNATData.m_strCIDR = network.GetNetwork();
-    oldNATData.m_fSupportsDHCP = network.GetNeedDhcpServer();
-    oldNATData.m_fSupportsIPv6 = network.GetIPv6Enabled();
-    oldNATData.m_fAdvertiseDefaultIPv6Route = network.GetAdvertiseDefaultIPv6RouteEnabled();
-
-    /* Load IPv4 rules: */
-    foreach (QString strIPv4Rule, network.GetPortForwardRules4())
-    {
-        /* Replace all ':' with ',' first: */
-        strIPv4Rule.replace(':', ',');
-        /* Parse rules: */
-        QStringList rules = strIPv4Rule.split(',');
-        Assert(rules.size() == 6);
-        if (rules.size() != 6)
-            continue;
-        cache.child1(rules.at(0)).cacheInitialData(UIDataPortForwardingRule(rules.at(0),
-                                                                            gpConverter->fromInternalString<KNATProtocol>(rules.at(1)),
-                                                                            QString(rules.at(2)).remove('[').remove(']'),
-                                                                            rules.at(3).toUInt(),
-                                                                            QString(rules.at(4)).remove('[').remove(']'),
-                                                                            rules.at(5).toUInt()));
-    }
-
-    /* Load IPv6 rules: */
-    foreach (QString strIPv6Rule, network.GetPortForwardRules6())
-    {
-        /* Replace all ':' with ',' first: */
-        strIPv6Rule.replace(':', ',');
-        /* But replace ',' back with ':' for addresses: */
-        QRegExp re("\\[[0-9a-fA-F,]*,[0-9a-fA-F,]*\\]");
-        re.setMinimal(true);
-        while (re.indexIn(strIPv6Rule) != -1)
-        {
-            QString strCapOld = re.cap(0);
-            QString strCapNew = strCapOld;
-            strCapNew.replace(',', ':');
-            strIPv6Rule.replace(strCapOld, strCapNew);
-        }
-        /* Parse rules: */
-        QStringList rules = strIPv6Rule.split(',');
-        Assert(rules.size() == 6);
-        if (rules.size() != 6)
-            continue;
-        cache.child2(rules.at(0)).cacheInitialData(UIDataPortForwardingRule(rules.at(0),
-                                                                            gpConverter->fromInternalString<KNATProtocol>(rules.at(1)),
-                                                                            QString(rules.at(2)).remove('[').remove(']'),
-                                                                            rules.at(3).toUInt(),
-                                                                            QString(rules.at(4)).remove('[').remove(']'),
-                                                                            rules.at(5).toUInt()));
-    }
-
-    /* Cache old NAT data: */
-    cache.cacheInitialData(oldNATData);
-}
-
-bool UIGlobalSettingsNetwork::removeNATNetwork(const UISettingsCacheGlobalNetworkNAT &cache)
-{
-    /* Prepare result: */
-    bool fSuccess = true;
-    /* Save NAT settings from the cache: */
-    if (fSuccess)
-    {
-        /* Get old NAT data from the cache: */
-        const UIDataSettingsGlobalNetworkNAT &oldNatData = cache.base();
-        /* Get new NAT data from the cache: */
-        //const UIDataSettingsGlobalNetworkNAT &newNatData = cache.data();
-
-        /* Get VBox for further activities: */
-        CVirtualBox comVBox = uiCommon().virtualBox();
-        /* Search for a NAT network with required name: */
-        CNATNetwork comNetwork = comVBox.FindNATNetworkByName(oldNatData.m_strName);
-        fSuccess = comVBox.isOk() && comNetwork.isNotNull();
-
-        /* Remove NAT network: */
-        if (fSuccess)
-        {
-            comVBox.RemoveNATNetwork(comNetwork);
-            fSuccess = comVBox.isOk();
-        }
-
-        /* Show error message if necessary: */
-        if (!fSuccess)
-            notifyOperationProgressError(UIErrorString::formatErrorInfo(comVBox));
-    }
-    /* Return result: */
-    return fSuccess;
-}
-
-bool UIGlobalSettingsNetwork::createNATNetwork(const UISettingsCacheGlobalNetworkNAT &cache)
-{
-    /* Prepare result: */
-    bool fSuccess = true;
-    /* Save NAT settings from the cache: */
-    if (fSuccess)
-    {
-        /* Get old NAT data from the cache: */
-        //const UIDataSettingsGlobalNetworkNAT &oldNatData = cache.base();
-        /* Get new NAT data from the cache: */
-        const UIDataSettingsGlobalNetworkNAT &newNatData = cache.data();
-
-        /* Get VBox for further activities: */
-        CVirtualBox comVBox = uiCommon().virtualBox();
-        /* Create NAT network with required name: */
-        CNATNetwork comNetwork = comVBox.CreateNATNetwork(newNatData.m_strNewName);
-        fSuccess = comVBox.isOk() && comNetwork.isNotNull();
-
-        /* Show error message if necessary: */
-        if (!fSuccess)
-            notifyOperationProgressError(UIErrorString::formatErrorInfo(comVBox));
-        else
-        {
-            /* Save whether NAT network is enabled: */
-            if (fSuccess)
-            {
-                comNetwork.SetEnabled(newNatData.m_fEnabled);
-                fSuccess = comNetwork.isOk();
-            }
-            /* Save NAT network name: */
-            if (fSuccess)
-            {
-                comNetwork.SetNetworkName(newNatData.m_strNewName);
-                fSuccess = comNetwork.isOk();
-            }
-            /* Save NAT network CIDR: */
-            if (fSuccess)
-            {
-                comNetwork.SetNetwork(newNatData.m_strCIDR);
-                fSuccess = comNetwork.isOk();
-            }
-            /* Save whether NAT network needs DHCP server: */
-            if (fSuccess)
-            {
-                comNetwork.SetNeedDhcpServer(newNatData.m_fSupportsDHCP);
-                fSuccess = comNetwork.isOk();
-            }
-            /* Save whether NAT network supports IPv6: */
-            if (fSuccess)
-            {
-                comNetwork.SetIPv6Enabled(newNatData.m_fSupportsIPv6);
-                fSuccess = comNetwork.isOk();
-            }
-            /* Save whether NAT network should advertise default IPv6 route: */
-            if (fSuccess)
-            {
-                comNetwork.SetAdvertiseDefaultIPv6RouteEnabled(newNatData.m_fAdvertiseDefaultIPv6Route);
-                fSuccess = comNetwork.isOk();
-            }
-
-            /* Save IPv4 forwarding rules: */
-            for (int i = 0; fSuccess && i < cache.childCount1(); ++i)
-            {
-                /* Get rule cache: */
-                const UISettingsCachePortForwardingRule &ruleCache = cache.child1(i);
-
-                /* Create rule not marked for 'remove': */
-                if (!ruleCache.wasRemoved())
-                {
-                    comNetwork.AddPortForwardRule(false,
-                                                  ruleCache.data().name, ruleCache.data().protocol,
-                                                  ruleCache.data().hostIp, ruleCache.data().hostPort.value(),
-                                                  ruleCache.data().guestIp, ruleCache.data().guestPort.value());
-                    fSuccess = comNetwork.isOk();
-                }
-            }
-
-            /* Save IPv6 forwarding rules: */
-            for (int i = 0; fSuccess && i < cache.childCount2(); ++i)
-            {
-                /* Get rule cache: */
-                const UISettingsCachePortForwardingRule &ruleCache = cache.child2(i);
-
-                /* Create rule not marked for 'remove': */
-                if (!ruleCache.wasRemoved())
-                {
-                    comNetwork.AddPortForwardRule(true,
-                                                  ruleCache.data().name, ruleCache.data().protocol,
-                                                  ruleCache.data().hostIp, ruleCache.data().hostPort.value(),
-                                                  ruleCache.data().guestIp, ruleCache.data().guestPort.value());
-                    fSuccess = comNetwork.isOk();
-                }
-            }
-
-            /* Show error message if necessary: */
-            if (!fSuccess)
-                notifyOperationProgressError(UIErrorString::formatErrorInfo(comNetwork));
-        }
-    }
-    /* Return result: */
-    return fSuccess;
-}
-
-bool UIGlobalSettingsNetwork::updateNATNetwork(const UISettingsCacheGlobalNetworkNAT &cache)
-{
-    /* Prepare result: */
-    bool fSuccess = true;
-    /* Save NAT settings from the cache: */
-    if (fSuccess)
-    {
-        /* Get old NAT data from the cache: */
-        const UIDataSettingsGlobalNetworkNAT &oldNatData = cache.base();
-        /* Get new NAT data from the cache: */
-        const UIDataSettingsGlobalNetworkNAT &newNatData = cache.data();
-
-        /* Get VBox for further activities: */
-        CVirtualBox comVBox = uiCommon().virtualBox();
-        /* Search for a NAT network with required name: */
-        CNATNetwork comNetwork = comVBox.FindNATNetworkByName(oldNatData.m_strName);
-        fSuccess = comVBox.isOk() && comNetwork.isNotNull();
-
-        /* Show error message if necessary: */
-        if (!fSuccess)
-            notifyOperationProgressError(UIErrorString::formatErrorInfo(comVBox));
-        else
-        {
-            /* Save whether NAT network is enabled: */
-            if (fSuccess && newNatData.m_fEnabled != oldNatData.m_fEnabled)
-            {
-                comNetwork.SetEnabled(newNatData.m_fEnabled);
-                fSuccess = comNetwork.isOk();
-            }
-            /* Save NAT network name: */
-            if (fSuccess && newNatData.m_strNewName != oldNatData.m_strNewName)
-            {
-                comNetwork.SetNetworkName(newNatData.m_strNewName);
-                fSuccess = comNetwork.isOk();
-            }
-            /* Save NAT network CIDR: */
-            if (fSuccess && newNatData.m_strCIDR != oldNatData.m_strCIDR)
-            {
-                comNetwork.SetNetwork(newNatData.m_strCIDR);
-                fSuccess = comNetwork.isOk();
-            }
-            /* Save whether NAT network needs DHCP server: */
-            if (fSuccess && newNatData.m_fSupportsDHCP != oldNatData.m_fSupportsDHCP)
-            {
-                comNetwork.SetNeedDhcpServer(newNatData.m_fSupportsDHCP);
-                fSuccess = comNetwork.isOk();
-            }
-            /* Save whether NAT network supports IPv6: */
-            if (fSuccess && newNatData.m_fSupportsIPv6 != oldNatData.m_fSupportsIPv6)
-            {
-                comNetwork.SetIPv6Enabled(newNatData.m_fSupportsIPv6);
-                fSuccess = comNetwork.isOk();
-            }
-            /* Save whether NAT network should advertise default IPv6 route: */
-            if (fSuccess && newNatData.m_fAdvertiseDefaultIPv6Route != oldNatData.m_fAdvertiseDefaultIPv6Route)
-            {
-                comNetwork.SetAdvertiseDefaultIPv6RouteEnabled(newNatData.m_fAdvertiseDefaultIPv6Route);
-                fSuccess = comNetwork.isOk();
-            }
-
-            /* Save IPv4 forwarding rules: */
-            for (int i = 0; fSuccess && i < cache.childCount1(); ++i)
-            {
-                /* Get rule cache: */
-                const UISettingsCachePortForwardingRule &ruleCache = cache.child1(i);
-
-                /* Remove rule marked for 'remove' or 'update': */
-                if (ruleCache.wasRemoved() || ruleCache.wasUpdated())
-                {
-                    comNetwork.RemovePortForwardRule(false,
-                                                     ruleCache.base().name);
-                    fSuccess = comNetwork.isOk();
-                }
-            }
-            for (int i = 0; fSuccess && i < cache.childCount1(); ++i)
-            {
-                /* Get rule cache: */
-                const UISettingsCachePortForwardingRule &ruleCache = cache.child1(i);
-
-                /* Create rule marked for 'create' or 'update': */
-                if (ruleCache.wasCreated() || ruleCache.wasUpdated())
-                {
-                    comNetwork.AddPortForwardRule(false,
-                                                  ruleCache.data().name, ruleCache.data().protocol,
-                                                  ruleCache.data().hostIp, ruleCache.data().hostPort.value(),
-                                                  ruleCache.data().guestIp, ruleCache.data().guestPort.value());
-                    fSuccess = comNetwork.isOk();
-                }
-            }
-
-            /* Save IPv6 forwarding rules: */
-            for (int i = 0; fSuccess && i < cache.childCount2(); ++i)
-            {
-                /* Get rule cache: */
-                const UISettingsCachePortForwardingRule &ruleCache = cache.child2(i);
-
-                /* Remove rule marked for 'remove' or 'update': */
-                if (ruleCache.wasRemoved() || ruleCache.wasUpdated())
-                {
-                    comNetwork.RemovePortForwardRule(true,
-                                                     ruleCache.base().name);
-                    fSuccess = comNetwork.isOk();
-                }
-            }
-            for (int i = 0; fSuccess && i < cache.childCount2(); ++i)
-            {
-                /* Get rule cache: */
-                const UISettingsCachePortForwardingRule &ruleCache = cache.child2(i);
-
-                /* Create rule marked for 'create' or 'update': */
-                if (ruleCache.wasCreated() || ruleCache.wasUpdated())
-                {
-                    comNetwork.AddPortForwardRule(true,
-                                                  ruleCache.data().name, ruleCache.data().protocol,
-                                                  ruleCache.data().hostIp, ruleCache.data().hostPort.value(),
-                                                  ruleCache.data().guestIp, ruleCache.data().guestPort.value());
-                    fSuccess = comNetwork.isOk();
-                }
-            }
-
-            /* Show error message if necessary: */
-            if (!fSuccess)
-                notifyOperationProgressError(UIErrorString::formatErrorInfo(comNetwork));
-        }
-    }
-    /* Return result: */
-    return fSuccess;
-}
-
-void UIGlobalSettingsNetwork::createTreeWidgetItemForNATNetwork(const UISettingsCacheGlobalNetworkNAT &cache)
-{
-    /* Get old NAT data: */
-    const UIDataSettingsGlobalNetworkNAT oldNATData = cache.base();
-
-    /* Load old port forwarding rules: */
-    UIPortForwardingDataList ipv4rules;
-    UIPortForwardingDataList ipv6rules;
-    for (int i = 0; i < cache.childCount1(); ++i)
-        ipv4rules << cache.child1(i).base();
-    for (int i = 0; i < cache.childCount2(); ++i)
-        ipv6rules << cache.child2(i).base();
-
-    /* Pass to wrapper below: */
-    createTreeWidgetItemForNATNetwork(oldNATData, ipv4rules, ipv6rules, false /* choose item? */);
-}
-
-void UIGlobalSettingsNetwork::createTreeWidgetItemForNATNetwork(const UIDataSettingsGlobalNetworkNAT &data,
-                                                                const UIPortForwardingDataList &ipv4rules,
-                                                                const UIPortForwardingDataList &ipv6rules,
-                                                                bool fChooseItem /* = false */)
-{
-    /* Create tree-widget item: */
-    UIItemNetworkNAT *pItem = new UIItemNetworkNAT;
-    AssertPtrReturnVoid(pItem);
-    {
-        /* Configure item: */
-        pItem->UIDataSettingsGlobalNetworkNAT::operator=(data);
-        pItem->setIpv4rules(ipv4rules);
-        pItem->setIpv6rules(ipv6rules);
-        pItem->updateFields();
-
-        /* Add item to the tree-widget: */
-        m_pTreeWidgetNATNetwork->addTopLevelItem(pItem);
-    }
-
-    /* And choose it as current if necessary: */
-    if (fChooseItem)
-        m_pTreeWidgetNATNetwork->setCurrentItem(pItem);
-}
-
-void UIGlobalSettingsNetwork::removeTreeWidgetItemOfNATNetwork(UIItemNetworkNAT *pItem)
-{
-    /* Delete passed item: */
-    delete pItem;
-}
-
-bool UIGlobalSettingsNetwork::isNetworkCouldBeUpdated(const UISettingsCacheGlobalNetworkNAT &cache) const
-{
-    /* INATNetwork interface allows to set 'name' attribute
-     * which can conflict with another one NAT network name.
-     * This attribute could be changed in GUI directly or indirectly.
-     * For such cases we have to recreate INATNetwork instance,
-     * for other cases we will update NAT network attributes only. */
-    const UIDataSettingsGlobalNetworkNAT &oldNATData = cache.base();
-    const UIDataSettingsGlobalNetworkNAT &newNATData = cache.data();
-    return true
-           && (newNATData.m_strNewName == oldNATData.m_strNewName)
-           ;
-}
-
-
-#include "UIGlobalSettingsNetwork.moc"
Index: unk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetwork.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetwork.h	(revision 87315)
+++ 	(revision )
@@ -1,151 +1,0 @@
-/* $Id$ */
-/** @file
- * VBox Qt GUI - UIGlobalSettingsNetwork class declaration.
- */
-
-/*
- * Copyright (C) 2009-2020 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-#ifndef FEQT_INCLUDED_SRC_settings_global_UIGlobalSettingsNetwork_h
-#define FEQT_INCLUDED_SRC_settings_global_UIGlobalSettingsNetwork_h
-#ifndef RT_WITHOUT_PRAGMA_ONCE
-# pragma once
-#endif
-
-/* GUI includes: */
-#include "UISettingsPage.h"
-#include "UIPortForwardingTable.h"
-
-/* Forward declarations: */
-class QILabelSeparator;
-class QITreeWidget;
-class QTreeWidgetItem;
-class UIItemNetworkNAT;
-class QIToolBar;
-struct UIDataSettingsGlobalNetwork;
-struct UIDataSettingsGlobalNetworkNAT;
-typedef UISettingsCache<UIDataPortForwardingRule> UISettingsCachePortForwardingRule;
-typedef UISettingsCachePoolOfTwo<UIDataSettingsGlobalNetworkNAT, UISettingsCachePortForwardingRule, UISettingsCachePortForwardingRule> UISettingsCacheGlobalNetworkNAT;
-typedef UISettingsCachePool<UIDataSettingsGlobalNetwork, UISettingsCacheGlobalNetworkNAT> UISettingsCacheGlobalNetwork;
-
-/** Global settings: Network page. */
-class SHARED_LIBRARY_STUFF UIGlobalSettingsNetwork : public UISettingsPageGlobal
-{
-    Q_OBJECT;
-
-public:
-
-    /** Constructs Network settings page. */
-    UIGlobalSettingsNetwork();
-    /** Destructs Network settings page. */
-    ~UIGlobalSettingsNetwork();
-
-protected:
-
-    /** Loads settings from external object(s) packed inside @a data to cache.
-      * @note  This task WILL be performed in other than the GUI thread, no widget interactions! */
-    virtual void loadToCacheFrom(QVariant &data) /* override */;
-    /** Loads data from cache to corresponding widgets.
-      * @note  This task WILL be performed in the GUI thread only, all widget interactions here! */
-    virtual void getFromCache() /* override */;
-
-    /** Saves data from corresponding widgets to cache.
-      * @note  This task WILL be performed in the GUI thread only, all widget interactions here! */
-    virtual void putToCache() /* override */;
-    /** Saves settings from cache to external object(s) packed inside @a data.
-      * @note  This task WILL be performed in other than the GUI thread, no widget interactions! */
-    virtual void saveFromCacheTo(QVariant &data) /* overrride */;
-
-    /** Performs validation, updates @a messages list if something is wrong. */
-    virtual bool validate(QList<UIValidationMessage> &messages) /* override */;
-
-    /** Handles translation event. */
-    virtual void retranslateUi() /* override */;
-
-private slots:
-
-    /** Handles command to add NAT network. */
-    void sltAddNATNetwork();
-    /** Handles command to remove NAT network. */
-    void sltRemoveNATNetwork();
-    /** Handles command to edit NAT network. */
-    void sltEditNATNetwork();
-
-    /** Handles @a pChangedItem change for NAT network tree. */
-    void sltHandleItemChangeNATNetwork(QTreeWidgetItem *pChangedItem);
-    /** Handles NAT network tree current item change. */
-    void sltHandleCurrentItemChangeNATNetwork();
-    /** Handles context menu request for @a position of NAT network tree. */
-    void sltHandleContextMenuRequestNATNetwork(const QPoint &position);
-
-private:
-
-    /** Prepares all. */
-    void prepare();
-    /** Prepares widgets. */
-    void prepareWidgets();
-    /** Prepares NAT network tree-widget. */
-    void prepareNATNetworkTreeWidget();
-    /** Prepares NAT network toolbar. */
-    void prepareNATNetworkToolbar();
-    /** Prepares connections. */
-    void prepareConnections();
-    /** Cleanups all. */
-    void cleanup();
-
-    /** Saves existing network data from the cache. */
-    bool saveNetworkData();
-
-    /** Uploads NAT @a network data into passed @a cache storage unit. */
-    void loadToCacheFromNATNetwork(const CNATNetwork &network, UISettingsCacheGlobalNetworkNAT &cache);
-    /** Removes corresponding NAT network on the basis of @a cache. */
-    bool removeNATNetwork(const UISettingsCacheGlobalNetworkNAT &cache);
-    /** Creates corresponding NAT network on the basis of @a cache. */
-    bool createNATNetwork(const UISettingsCacheGlobalNetworkNAT &cache);
-    /** Updates @a cache of corresponding NAT network. */
-    bool updateNATNetwork(const UISettingsCacheGlobalNetworkNAT &cache);
-    /** Creates a new item in the NAT network tree on the basis of passed @a cache. */
-    void createTreeWidgetItemForNATNetwork(const UISettingsCacheGlobalNetworkNAT &cache);
-    /** Creates a new item in the NAT network tree on the basis of passed
-      * @a data, @a ipv4rules, @a ipv6rules, @a fChooseItem if requested. */
-    void createTreeWidgetItemForNATNetwork(const UIDataSettingsGlobalNetworkNAT &data,
-                                           const UIPortForwardingDataList &ipv4rules,
-                                           const UIPortForwardingDataList &ipv6rules,
-                                           bool fChooseItem = false);
-    /** Removes existing @a pItem from the NAT network tree. */
-    void removeTreeWidgetItemOfNATNetwork(UIItemNetworkNAT *pItem);
-    /** Returns whether the NAT network described by the @a cache could be updated or recreated otherwise. */
-    bool isNetworkCouldBeUpdated(const UISettingsCacheGlobalNetworkNAT &cache) const;
-
-    /** Holds the page data cache instance. */
-    UISettingsCacheGlobalNetwork *m_pCache;
-
-    /** @name Widgets
-     * @{ */
-        /** Holds the separator label instance. */
-        QILabelSeparator *m_pLabelSeparator;
-        /** Holds the NAT networt layout instance. */
-        QHBoxLayout      *m_pLayoutNATNetwork;
-        /** Holds the NAT networt tree-widget instance. */
-        QITreeWidget     *m_pTreeWidgetNATNetwork;
-        /** Holds the NAT networt toolbar instance. */
-        QIToolBar        *m_pToolbarNATNetwork;
-        /** Holds the 'add NAT network' action instance. */
-        QAction          *m_pActionAdd;
-        /** Holds the 'remove NAT network' action instance. */
-        QAction          *m_pActionRemove;
-        /** Holds the 'edit NAT network' action instance. */
-        QAction          *m_pActionEdit;
-    /** @} */
-};
-
-#endif /* !FEQT_INCLUDED_SRC_settings_global_UIGlobalSettingsNetwork_h */
Index: unk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetworkDetailsNAT.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetworkDetailsNAT.cpp	(revision 87315)
+++ 	(revision )
@@ -1,258 +1,0 @@
-/* $Id$ */
-/** @file
- * VBox Qt GUI - UIGlobalSettingsNetworkDetailsNAT class implementation.
- */
-
-/*
- * Copyright (C) 2009-2020 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-/* Qt includes: */
-#include <QCheckBox>
-#include <QRegExpValidator>
-#include <QGridLayout>
-#include <QLabel>
-#include <QLineEdit>
-#include <QPushButton>
-
-/* GUI includes: */
-#include "QIDialogButtonBox.h"
-#include "UIGlobalSettingsNetwork.h"
-#include "UIGlobalSettingsNetworkDetailsNAT.h"
-#include "UIGlobalSettingsPortForwardingDlg.h"
-
-
-UIGlobalSettingsNetworkDetailsNAT::UIGlobalSettingsNetworkDetailsNAT(QWidget *pParent,
-                                                                     UIDataSettingsGlobalNetworkNAT &data,
-                                                                     UIPortForwardingDataList &ipv4rules,
-                                                                     UIPortForwardingDataList &ipv6rules)
-    : QIWithRetranslateUI2<QIDialog>(pParent)
-    , m_data(data)
-    , m_ipv4rules(ipv4rules)
-    , m_ipv6rules(ipv6rules)
-    , m_pCheckboxNetwork(0)
-    , m_pWidgetSettings(0)
-    , m_pLabelNetworkName(0)
-    , m_pEditorNetworkName(0)
-    , m_pLabelNetworkCIDR(0)
-    , m_pEditorNetworkCIDR(0)
-    , m_pLabelExtended(0)
-    , m_pCheckboxSupportsDHCP(0)
-    , m_pCheckboxSupportsIPv6(0)
-    , m_pCheckboxAdvertiseDefaultIPv6Route(0)
-    , m_pButtonPortForwarding(0)
-    , m_pButtonBox(0)
-{
-    prepare();
-}
-
-void UIGlobalSettingsNetworkDetailsNAT::prepare()
-{
-    /* Setup dialog: */
-    setWindowIcon(QIcon(":/guesttools_16px.png"));
-
-    /* Prepare everything: */
-    prepareWidgets();
-    prepareConnections();
-
-    /* Apply language settings: */
-    retranslateUi();
-
-    /* Load: */
-    load();
-
-    /* Adjust dialog size: */
-    adjustSize();
-
-#ifdef VBOX_WS_MAC
-    setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
-    setFixedSize(minimumSize());
-#endif /* VBOX_WS_MAC */
-}
-
-void UIGlobalSettingsNetworkDetailsNAT::prepareWidgets()
-{
-    /* Prepare main layout: */
-    QGridLayout *pLayoutMain = new QGridLayout(this);
-    if (pLayoutMain)
-    {
-        pLayoutMain->setRowStretch(2, 1);
-
-        /* Prepare network check-box: */
-        m_pCheckboxNetwork = new QCheckBox(this);
-        pLayoutMain->addWidget(m_pCheckboxNetwork, 0, 0, 1, 2);
-
-        /* Prepare 20-px shifting spacer: */
-        QSpacerItem *pSpacerItem = new QSpacerItem(20, 0, QSizePolicy::Fixed, QSizePolicy::Minimum);
-        if (pSpacerItem)
-            pLayoutMain->addItem(pSpacerItem, 1, 0);
-
-        /* Prepare settings widget: */
-        m_pWidgetSettings = new QWidget(this);
-        if (m_pWidgetSettings)
-        {
-            /* Prepare settings widget layout: */
-            QGridLayout *pLayoutSettings = new QGridLayout(m_pWidgetSettings);
-            if (pLayoutSettings)
-            {
-                pLayoutSettings->setContentsMargins(0, 0, 0, 0);
-                pLayoutSettings->setColumnStretch(3, 1);
-
-                /* Prepare network name label: */
-                m_pLabelNetworkName = new QLabel(m_pWidgetSettings);
-                if (m_pLabelNetworkName)
-                {
-                    m_pLabelNetworkName->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
-                    pLayoutSettings->addWidget(m_pLabelNetworkName, 0, 0);
-                }
-                /* Prepare network name editor: */
-                m_pEditorNetworkName = new QLineEdit(m_pWidgetSettings);
-                if (m_pEditorNetworkName)
-                {
-                    if (m_pLabelNetworkName)
-                        m_pLabelNetworkName->setBuddy(m_pEditorNetworkName);
-                    pLayoutSettings->addWidget(m_pEditorNetworkName, 0, 1, 1, 3);
-                }
-
-                /* Prepare network CIDR label: */
-                m_pLabelNetworkCIDR = new QLabel(m_pWidgetSettings);
-                if (m_pLabelNetworkCIDR)
-                {
-                    m_pLabelNetworkCIDR->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
-                    pLayoutSettings->addWidget(m_pLabelNetworkCIDR, 1, 0);
-                }
-                /* Prepare network CIDR editor: */
-                m_pEditorNetworkCIDR = new QLineEdit(m_pWidgetSettings);
-                if (m_pEditorNetworkCIDR)
-                {
-                    if (m_pLabelNetworkCIDR)
-                        m_pLabelNetworkCIDR->setBuddy(m_pEditorNetworkCIDR);
-                    pLayoutSettings->addWidget(m_pEditorNetworkCIDR, 1, 1, 1, 3);
-                }
-
-                /* Prepare extended label: */
-                m_pLabelExtended = new QLabel(m_pWidgetSettings);
-                if (m_pLabelExtended)
-                {
-                    m_pLabelExtended->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
-                    pLayoutSettings->addWidget(m_pLabelExtended, 2, 0);
-                }
-                /* Prepare 'supports DHCP' check-box: */
-                m_pCheckboxSupportsDHCP = new QCheckBox(m_pWidgetSettings);
-                if (m_pCheckboxSupportsDHCP)
-                    pLayoutSettings->addWidget(m_pCheckboxSupportsDHCP, 2, 1, 1, 2);
-                /* Prepare 'supports IPv6' check-box: */
-                m_pCheckboxSupportsIPv6 = new QCheckBox(m_pWidgetSettings);
-                if (m_pCheckboxSupportsIPv6)
-                    pLayoutSettings->addWidget(m_pCheckboxSupportsIPv6, 3, 1, 1, 2);
-                /* Prepare 'advertise default IPv6 route' check-box: */
-                m_pCheckboxAdvertiseDefaultIPv6Route = new QCheckBox(m_pWidgetSettings);
-                if (m_pCheckboxAdvertiseDefaultIPv6Route)
-                    pLayoutSettings->addWidget(m_pCheckboxAdvertiseDefaultIPv6Route, 4, 1, 1, 2);
-
-                /* Prepare port forwarding button: */
-                m_pButtonPortForwarding = new QPushButton(m_pWidgetSettings);
-                if (m_pButtonPortForwarding)
-                    pLayoutSettings->addWidget(m_pButtonPortForwarding, 5, 1);
-            }
-
-            pLayoutMain->addWidget(m_pWidgetSettings, 1, 1);
-        }
-
-        /* Prepare dialog button-box button: */
-        m_pButtonBox = new QIDialogButtonBox(this);
-        if (m_pButtonBox)
-        {
-            m_pButtonBox->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok);
-            pLayoutMain->addWidget(m_pButtonBox, 3, 0, 1, 2);
-        }
-    }
-}
-
-void UIGlobalSettingsNetworkDetailsNAT::prepareConnections()
-{
-    connect(m_pCheckboxNetwork, &QCheckBox::toggled, m_pWidgetSettings, &QWidget::setEnabled);
-    connect(m_pCheckboxSupportsIPv6, &QCheckBox::toggled, m_pCheckboxAdvertiseDefaultIPv6Route, &QCheckBox::setEnabled);
-    connect(m_pButtonPortForwarding, &QPushButton::clicked, this, &UIGlobalSettingsNetworkDetailsNAT::sltEditPortForwarding);
-    connect(m_pButtonBox, &QIDialogButtonBox::accepted, this, &UIGlobalSettingsNetworkDetailsNAT::accept);
-    connect(m_pButtonBox, &QIDialogButtonBox::rejected, this, &UIGlobalSettingsNetworkDetailsNAT::reject);
-}
-
-void UIGlobalSettingsNetworkDetailsNAT::retranslateUi()
-{
-    setWindowTitle(tr("NAT Network Details"));
-    m_pCheckboxNetwork->setText(tr("&Enable Network"));
-    m_pCheckboxNetwork->setToolTip(tr("When checked, this network will be enabled."));
-    m_pLabelNetworkName->setText(tr("Network &Name:"));
-    m_pEditorNetworkName->setToolTip(tr("Holds the name for this network."));
-    m_pLabelNetworkCIDR->setText(tr("Network &CIDR:"));
-    m_pEditorNetworkCIDR->setToolTip(tr("Holds the CIDR for this network."));
-    m_pLabelExtended->setText(tr("Network Options:"));
-    m_pCheckboxSupportsDHCP->setText(tr("Supports &DHCP"));
-    m_pCheckboxSupportsDHCP->setToolTip(tr("When checked, this network will support DHCP."));
-    m_pCheckboxSupportsIPv6->setText(tr("Supports &IPv6"));
-    m_pCheckboxSupportsIPv6->setToolTip(tr("When checked, this network will support IPv6."));
-    m_pCheckboxAdvertiseDefaultIPv6Route->setText(tr("Advertise Default IPv6 &Route"));
-    m_pCheckboxAdvertiseDefaultIPv6Route->setToolTip(tr("When checked, this network will be advertised as the default IPv6 route."));
-    m_pButtonPortForwarding->setToolTip(tr("Displays a window to configure port forwarding rules."));
-    m_pButtonPortForwarding->setText(tr("&Port Forwarding"));
-}
-
-void UIGlobalSettingsNetworkDetailsNAT::polishEvent(QShowEvent *pEvent)
-{
-    /* Call to base-class: */
-    QIWithRetranslateUI2<QIDialog>::polishEvent(pEvent);
-
-    /* Update availability: */
-    m_pCheckboxAdvertiseDefaultIPv6Route->setEnabled(m_pCheckboxSupportsIPv6->isChecked());
-    m_pWidgetSettings->setEnabled(m_pCheckboxNetwork->isChecked());
-}
-
-void UIGlobalSettingsNetworkDetailsNAT::sltEditPortForwarding()
-{
-    /* Open dialog to edit port-forwarding rules: */
-    UIGlobalSettingsPortForwardingDlg dlg(this, m_ipv4rules, m_ipv6rules);
-    if (dlg.exec() == QDialog::Accepted)
-    {
-        m_ipv4rules = dlg.ipv4rules();
-        m_ipv6rules = dlg.ipv6rules();
-    }
-}
-
-void UIGlobalSettingsNetworkDetailsNAT::accept()
-{
-    /* Save before accept: */
-    save();
-    /* Call to base-class: */
-    QIDialog::accept();
-}
-
-void UIGlobalSettingsNetworkDetailsNAT::load()
-{
-    /* NAT Network: */
-    m_pCheckboxNetwork->setChecked(m_data.m_fEnabled);
-    m_pEditorNetworkName->setText(m_data.m_strNewName);
-    m_pEditorNetworkCIDR->setText(m_data.m_strCIDR);
-    m_pCheckboxSupportsDHCP->setChecked(m_data.m_fSupportsDHCP);
-    m_pCheckboxSupportsIPv6->setChecked(m_data.m_fSupportsIPv6);
-    m_pCheckboxAdvertiseDefaultIPv6Route->setChecked(m_data.m_fAdvertiseDefaultIPv6Route);
-}
-
-void UIGlobalSettingsNetworkDetailsNAT::save()
-{
-    /* NAT Network: */
-    m_data.m_fEnabled = m_pCheckboxNetwork->isChecked();
-    m_data.m_strNewName = m_pEditorNetworkName->text().trimmed();
-    m_data.m_strCIDR = m_pEditorNetworkCIDR->text().trimmed();
-    m_data.m_fSupportsDHCP = m_pCheckboxSupportsDHCP->isChecked();
-    m_data.m_fSupportsIPv6 = m_pCheckboxSupportsIPv6->isChecked();
-    m_data.m_fAdvertiseDefaultIPv6Route = m_pCheckboxAdvertiseDefaultIPv6Route->isChecked();
-}
Index: unk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetworkDetailsNAT.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetworkDetailsNAT.h	(revision 87315)
+++ 	(revision )
@@ -1,162 +1,0 @@
-/* $Id$ */
-/** @file
- * VBox Qt GUI - UIGlobalSettingsNetworkDetailsNAT class declaration.
- */
-
-/*
- * Copyright (C) 2009-2020 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-#ifndef FEQT_INCLUDED_SRC_settings_global_UIGlobalSettingsNetworkDetailsNAT_h
-#define FEQT_INCLUDED_SRC_settings_global_UIGlobalSettingsNetworkDetailsNAT_h
-#ifndef RT_WITHOUT_PRAGMA_ONCE
-# pragma once
-#endif
-
-/* GUI includes: */
-#include "QIDialog.h"
-#include "QIWithRetranslateUI.h"
-#include "UIPortForwardingTable.h"
-
-/* Forward declarations. */
-class QCheckBox;
-class QLabel;
-class QLineEdit;
-class QIDialogButtonBox;
-
-/** Global settings: Network page: NAT network data structure. */
-struct UIDataSettingsGlobalNetworkNAT
-{
-    /** Constructs data. */
-    UIDataSettingsGlobalNetworkNAT()
-        : m_fEnabled(false)
-        , m_strName(QString())
-        , m_strNewName(QString())
-        , m_strCIDR(QString())
-        , m_fSupportsDHCP(false)
-        , m_fSupportsIPv6(false)
-        , m_fAdvertiseDefaultIPv6Route(false)
-    {}
-
-    /** Returns whether the @a other passed data is equal to this one. */
-    bool equal(const UIDataSettingsGlobalNetworkNAT &other) const
-    {
-        return true
-               && (m_fEnabled == other.m_fEnabled)
-               && (m_strName == other.m_strName)
-               && (m_strNewName == other.m_strNewName)
-               && (m_strCIDR == other.m_strCIDR)
-               && (m_fSupportsDHCP == other.m_fSupportsDHCP)
-               && (m_fSupportsIPv6 == other.m_fSupportsIPv6)
-               && (m_fAdvertiseDefaultIPv6Route == other.m_fAdvertiseDefaultIPv6Route)
-               ;
-    }
-
-    /** Returns whether the @a other passed data is equal to this one. */
-    bool operator==(const UIDataSettingsGlobalNetworkNAT &other) const { return equal(other); }
-    /** Returns whether the @a other passed data is different from this one. */
-    bool operator!=(const UIDataSettingsGlobalNetworkNAT &other) const { return !equal(other); }
-
-    /** Holds whether this network enabled. */
-    bool m_fEnabled;
-    /** Holds network name. */
-    QString m_strName;
-    /** Holds new network name. */
-    QString m_strNewName;
-    /** Holds network CIDR. */
-    QString m_strCIDR;
-    /** Holds whether this network supports DHCP. */
-    bool m_fSupportsDHCP;
-    /** Holds whether this network supports IPv6. */
-    bool m_fSupportsIPv6;
-    /** Holds whether this network advertised as default IPv6 route. */
-    bool m_fAdvertiseDefaultIPv6Route;
-};
-
-
-/* Global settings / Network page / Details sub-dialog: */
-class SHARED_LIBRARY_STUFF UIGlobalSettingsNetworkDetailsNAT : public QIWithRetranslateUI2<QIDialog>
-{
-    Q_OBJECT;
-
-public:
-
-    /* Constructor: */
-    UIGlobalSettingsNetworkDetailsNAT(QWidget *pParent, UIDataSettingsGlobalNetworkNAT &data, UIPortForwardingDataList &ipv4rules, UIPortForwardingDataList &ipv6rules);
-
-protected:
-
-    /* Handler: Translation stuff: */
-    void retranslateUi();
-
-    /* Handler: Polish event: */
-    void polishEvent(QShowEvent *pEvent);
-
-private slots:
-
-    /* Handler: Port-forwarding stuff: */
-    void sltEditPortForwarding();
-
-    /* Handler: Dialog stuff: */
-    void accept();
-
-private:
-
-    /* Prepares all. */
-    void prepare();
-    /* Prepares widgets. */
-    void prepareWidgets();
-    /* Prepares connections. */
-    void prepareConnections();
-
-    /* Helpers: Load/Save stuff: */
-    void load();
-    void save();
-
-    /* Variable: External data reference: */
-    UIDataSettingsGlobalNetworkNAT &m_data;
-
-    /** Holds IPv4 port forwarding rules. */
-    UIPortForwardingDataList &m_ipv4rules;
-    /** Holds IPv6 port forwarding rules. */
-    UIPortForwardingDataList &m_ipv6rules;
-
-    /** @name Widgets
-     * @{ */
-        /** Holds the network check-box instance. */
-        QCheckBox         *m_pCheckboxNetwork;
-        /** Holds the settings widget instance. */
-        QWidget           *m_pWidgetSettings;
-        /** Holds the network name label instance. */
-        QLabel            *m_pLabelNetworkName;
-        /** Holds the network name editor instance. */
-        QLineEdit         *m_pEditorNetworkName;
-        /** Holds the network CIDR label instance. */
-        QLabel            *m_pLabelNetworkCIDR;
-        /** Holds the network CIDR editor instance. */
-        QLineEdit         *m_pEditorNetworkCIDR;
-        /** Holds the extended label instance. */
-        QLabel            *m_pLabelExtended;
-        /** Holds the 'supports DHCP' check-box instance. */
-        QCheckBox         *m_pCheckboxSupportsDHCP;
-        /** Holds the 'supports IPv6' check-box instance. */
-        QCheckBox         *m_pCheckboxSupportsIPv6;
-        /** Holds the 'advertise default IPv6 route' check-box instance. */
-        QCheckBox         *m_pCheckboxAdvertiseDefaultIPv6Route;
-        /** Holds the port forwarding button instance. */
-        QPushButton       *m_pButtonPortForwarding;
-        /** Holds the dialog button-box instance. */
-        QIDialogButtonBox *m_pButtonBox;
-    /** @} */
-};
-
-
-#endif /* !FEQT_INCLUDED_SRC_settings_global_UIGlobalSettingsNetworkDetailsNAT_h */
Index: unk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsPortForwardingDlg.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsPortForwardingDlg.cpp	(revision 87315)
+++ 	(revision )
@@ -1,114 +1,0 @@
-/* $Id$ */
-/** @file
- * VBox Qt GUI - UIGlobalSettingsPortForwardingDlg class implementation.
- */
-
-/*
- * Copyright (C) 2010-2020 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-/* Qt includes: */
-#include <QVBoxLayout>
-#include <QPushButton>
-#include <QTabWidget>
-
-/* GUI includes: */
-#include "UIDesktopWidgetWatchdog.h"
-#include "UIGlobalSettingsPortForwardingDlg.h"
-#include "UIIconPool.h"
-#include "UIMessageCenter.h"
-#include "QIDialogButtonBox.h"
-
-
-UIGlobalSettingsPortForwardingDlg::UIGlobalSettingsPortForwardingDlg(QWidget *pParent,
-                                                                     const UIPortForwardingDataList &ipv4rules,
-                                                                     const UIPortForwardingDataList &ipv6rules)
-    : QIWithRetranslateUI<QIDialog>(pParent)
-    , m_pIPv4Table(0)
-    , m_pIPv6Table(0)
-    , m_pButtonBox(0)
-{
-    /* Set dialog icon: */
-    setWindowIcon(UIIconPool::iconSetFull(":/nw_32px.png", ":/nw_16px.png"));
-
-    /* Create layout: */
-    QVBoxLayout *pMainLayout = new QVBoxLayout(this);
-    {
-        /* Create tab-widget: */
-        m_pTabWidget = new QTabWidget;
-        {
-            /* Create table tabs: */
-            m_pIPv4Table = new UIPortForwardingTable(ipv4rules, false, false);
-            m_pIPv6Table = new UIPortForwardingTable(ipv6rules, true, false);
-            /* Add widgets into tab-widget: */
-            m_pTabWidget->addTab(m_pIPv4Table, QString());
-            m_pTabWidget->addTab(m_pIPv6Table, QString());
-        }
-        /* Create button-box: */
-        m_pButtonBox = new QIDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal);
-        {
-            /* Configure button-box: */
-            connect(m_pButtonBox->button(QDialogButtonBox::Ok), &QPushButton::clicked, this, &UIGlobalSettingsPortForwardingDlg::accept);
-            connect(m_pButtonBox->button(QDialogButtonBox::Cancel), &QPushButton::clicked, this, &UIGlobalSettingsPortForwardingDlg::reject);
-        }
-        /* Add widgets into layout: */
-        pMainLayout->addWidget(m_pTabWidget);
-        pMainLayout->addWidget(m_pButtonBox);
-    }
-
-    /* Retranslate dialog: */
-    retranslateUi();
-
-    /* Limit the minimum size to 33% of screen size: */
-    setMinimumSize(gpDesktop->screenGeometry(this).size() / 3);
-}
-
-const UIPortForwardingDataList UIGlobalSettingsPortForwardingDlg::ipv4rules() const
-{
-    return m_pIPv4Table->rules();
-}
-
-const UIPortForwardingDataList UIGlobalSettingsPortForwardingDlg::ipv6rules() const
-{
-    return m_pIPv6Table->rules();
-}
-
-void UIGlobalSettingsPortForwardingDlg::accept()
-{
-    /* Make sure both tables have their data committed: */
-    m_pIPv4Table->makeSureEditorDataCommitted();
-    m_pIPv6Table->makeSureEditorDataCommitted();
-    /* Validate table: */
-    bool fPassed = m_pIPv4Table->validate() && m_pIPv6Table->validate();
-    if (!fPassed)
-        return;
-    /* Call to base-class: */
-    QIWithRetranslateUI<QIDialog>::accept();
-}
-
-void UIGlobalSettingsPortForwardingDlg::reject()
-{
-    /* Ask user to discard table changes if necessary: */
-    if (   (m_pIPv4Table->isChanged() || m_pIPv6Table->isChanged())
-        && !msgCenter().confirmCancelingPortForwardingDialog(window()))
-        return;
-    /* Call to base-class: */
-    QIWithRetranslateUI<QIDialog>::reject();
-}
-
-void UIGlobalSettingsPortForwardingDlg::retranslateUi()
-{
-    /* Set window title: */
-    setWindowTitle(tr("Port Forwarding Rules"));
-    /* Set tab-widget tab names: */
-    m_pTabWidget->setTabText(0, tr("IPv4"));
-    m_pTabWidget->setTabText(1, tr("IPv6"));
-}
Index: unk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsPortForwardingDlg.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsPortForwardingDlg.h	(revision 87315)
+++ 	(revision )
@@ -1,67 +1,0 @@
-/* $Id$ */
-/** @file
- * VBox Qt GUI - UIMachineSettingsPortForwardingDlg class declaration.
- */
-
-/*
- * Copyright (C) 2010-2020 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-#ifndef FEQT_INCLUDED_SRC_settings_global_UIGlobalSettingsPortForwardingDlg_h
-#define FEQT_INCLUDED_SRC_settings_global_UIGlobalSettingsPortForwardingDlg_h
-#ifndef RT_WITHOUT_PRAGMA_ONCE
-# pragma once
-#endif
-
-/* GUI includes: */
-#include "QIWithRetranslateUI.h"
-#include "QIDialog.h"
-#include "UIPortForwardingTable.h"
-
-/* Forward declarations: */
-class QTabWidget;
-class QIDialogButtonBox;
-
-/* Global settings / Network page / NAT network tab / Port forwarding dialog: */
-class SHARED_LIBRARY_STUFF UIGlobalSettingsPortForwardingDlg : public QIWithRetranslateUI<QIDialog>
-{
-    Q_OBJECT;
-
-public:
-
-    /* Constructor/destructor: */
-    UIGlobalSettingsPortForwardingDlg(QWidget *pParent,
-                                      const UIPortForwardingDataList &ipv4rules,
-                                      const UIPortForwardingDataList &ipv6rules);
-
-    /* API: Rules stuff: */
-    const UIPortForwardingDataList ipv4rules() const;
-    const UIPortForwardingDataList ipv6rules() const;
-
-private slots:
-
-    /* Handlers: Dialog stuff: */
-    void accept();
-    void reject();
-
-private:
-
-    /* Handler: Translation stuff: */
-    void retranslateUi();
-
-    /* Widgets: */
-    QTabWidget *m_pTabWidget;
-    UIPortForwardingTable *m_pIPv4Table;
-    UIPortForwardingTable *m_pIPv6Table;
-    QIDialogButtonBox *m_pButtonBox;
-};
-
-#endif /* !FEQT_INCLUDED_SRC_settings_global_UIGlobalSettingsPortForwardingDlg_h */
