VirtualBox

Changeset 48524 in vbox for trunk


Ignore:
Timestamp:
Sep 18, 2013 4:02:52 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
89052
Message:

FE/Qt: Global properties / Network page / NAT network tab: IPv4 port forwarding UI.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/settings/global
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetwork.cpp

    r48497 r48524  
    2525#include "VBoxGlobal.h"
    2626#include "UIIconPool.h"
     27#include "UIConverter.h"
    2728#include "UIMessageCenter.h"
    2829#include "UIGlobalSettingsNetwork.h"
     
    127128    {
    128129        /* Emptiness validation: */
    129         message.second << UIGlobalSettingsNetwork::tr("The new name for NAT network previously called <b>%1</b> is empty.").arg(m_data.m_strName);
     130        message.second << UIGlobalSettingsNetwork::tr("No new name specified for the NAT network previously called <b>%1</b>.").arg(m_data.m_strName);
    130131        fNameValid = false;
    131132        fPass = false;
     
    137138        /* Emptiness validation: */
    138139        if (fNameValid)
    139             message.second << UIGlobalSettingsNetwork::tr("The CIDR for NAT network <b>%1</b> is empty.").arg(m_data.m_strNewName);
     140            message.second << UIGlobalSettingsNetwork::tr("No CIDR specified for the NAT network <b>%1</b>.").arg(m_data.m_strNewName);
    140141        else
    141             message.second << UIGlobalSettingsNetwork::tr("The CIDR for NAT network previously called <b>%1</b> is empty.").arg(m_data.m_strName);
     142            message.second << UIGlobalSettingsNetwork::tr("No CIDR specified for the NAT network previously called <b>%1</b>.").arg(m_data.m_strName);
    142143        fPass = false;
    143144    }
     
    150151        {
    151152            if (fNameValid)
    152                 message.second << UIGlobalSettingsNetwork::tr("The CIDR <i>%1</i> for NAT network <b>%2</b> is invalid.")
     153                message.second << UIGlobalSettingsNetwork::tr("Invalid CIDR specified (<i>%1</i>) for the NAT network <b>%2</b>.")
    153154                                                              .arg(m_data.m_strCIDR, m_data.m_strNewName);
    154155            else
    155                 message.second << UIGlobalSettingsNetwork::tr("The CIDR <i>%1</i> for NAT network previously called <b>%2</b> is invalid.")
     156                message.second << UIGlobalSettingsNetwork::tr("Invalid CIDR specified (<i>%1</i>) for the NAT network previously called <b>%2</b>.")
    156157                                                              .arg(m_data.m_strCIDR, m_data.m_strName);
    157158            fPass = false;
     
    199200
    200201    /* Assign tool-tip finally: */
    201     setToolTip(0, strToolTip);
     202    setToolTip(1, strToolTip);
    202203}
    203204
     
    922923    data.m_fAdvertiseDefaultIPv6Route = network.GetAdvertiseDefaultIPv6RouteEnabled();
    923924
     925    /* Load redirect options: */
     926    QVector<QString> redirects = network.GetPortForwardRules4();
     927    foreach (const QString &strRedirect, redirects)
     928    {
     929        QStringList redirectData = strRedirect.split(':');
     930        Assert(redirectData.size() == 6);
     931        if (redirectData.size() != 6)
     932            continue;
     933        data.m_redirects << UIPortForwardingData(redirectData[0],
     934                                                 gpConverter->fromInternalString<KNATProtocol>(redirectData[1]),
     935                                                 QString(redirectData[2]).remove('[').remove(']'),
     936                                                 redirectData[3].toUInt(),
     937                                                 QString(redirectData[4]).remove('[').remove(']'),
     938                                                 redirectData[5].toUInt());
     939    }
     940
    924941    /* Return data: */
    925942    return data;
     
    940957    network.SetIPv6Enabled(data.m_fSupportsIPv6);
    941958    network.SetAdvertiseDefaultIPv6RouteEnabled(data.m_fAdvertiseDefaultIPv6Route);
     959
     960    /* Rewrite redirect options: */
     961    QVector<QString> oldRedirects = network.GetPortForwardRules4();
     962    foreach (const QString &strRedirect, oldRedirects)
     963        network.RemovePortForwardRule(false, strRedirect.section(':', 0, 0));
     964    foreach (const UIPortForwardingData &newRedirect, data.m_redirects)
     965        network.AddPortForwardRule(false,
     966                                   newRedirect.name, newRedirect.protocol,
     967                                   newRedirect.hostIp, newRedirect.hostPort.value(),
     968                                   newRedirect.guestIp, newRedirect.guestPort.value());
    942969}
    943970
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetwork.h

    r48497 r48524  
    2323#include "UISettingsPage.h"
    2424#include "UIGlobalSettingsNetwork.gen.h"
     25#include "UIMachineSettingsPortForwardingDlg.h"
    2526
    2627/* Forward declarations: */
     
    4041    bool m_fSupportsIPv6;
    4142    bool m_fAdvertiseDefaultIPv6Route;
     43    UIPortForwardingDataList m_redirects;
    4244    bool operator==(const UIDataNetworkNAT &other) const
    4345    {
     
    4850               m_fSupportsDHCP == other.m_fSupportsDHCP &&
    4951               m_fSupportsIPv6 == other.m_fSupportsIPv6 &&
    50                m_fAdvertiseDefaultIPv6Route == other.m_fAdvertiseDefaultIPv6Route;
     52               m_fAdvertiseDefaultIPv6Route == other.m_fAdvertiseDefaultIPv6Route &&
     53               m_redirects == other.m_redirects;
    5154    }
    5255};
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetworkDetailsNAT.cpp

    r48458 r48524  
    6969}
    7070
     71void UIGlobalSettingsNetworkDetailsNAT::sltEditPortForwarding()
     72{
     73    /* Open dialog to edit port-forwarding rules: */
     74    UIMachineSettingsPortForwardingDlg dlg(this, m_data.m_redirects);
     75    if (dlg.exec() == QDialog::Accepted)
     76        m_data.m_redirects = dlg.rules();
     77}
     78
    7179void UIGlobalSettingsNetworkDetailsNAT::accept()
    7280{
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetworkDetailsNAT.h

    r48458 r48524  
    4848private slots:
    4949
     50    /* Handler: Port-forwarding stuff: */
     51    void sltEditPortForwarding();
     52
    5053    /* Handler: Dialog stuff: */
    5154    void accept();
  • trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsNetworkDetailsNAT.ui

    r48458 r48524  
    2222    <widget class="QCheckBox" name="m_pCheckboxNetwork">
    2323     <property name="text">
    24       <string>Network &amp;Enabled</string>
     24      <string>&amp;Enable Network</string>
    2525     </property>
    2626     <property name="toolTip">
     
    3232    <widget class="QWidget" name="m_pContainerOptions">
    3333     <layout class="QGridLayout">
    34       <item row="0" column="0" rowspan="3">
     34      <item row="0" column="0">
    3535       <spacer>
    3636        <property name="orientation">
     
    125125        <property name="toolTip">
    126126         <string>Determines whether default IPv6 route should be advertised for this network.</string>
     127        </property>
     128       </widget>
     129      </item>
     130      <item row="5" column="2">
     131       <widget class="QPushButton" name="m_pButtonPortForwarding">
     132        <property name="whatsThis">
     133         <string>Opens dialog to manage port forwarding rules.</string>
     134        </property>
     135        <property name="text">
     136         <string>&amp;Port Forwarding</string>
    127137        </property>
    128138       </widget>
     
    175185  </connection>
    176186  <connection>
     187   <sender>m_pButtonPortForwarding</sender>
     188   <signal>clicked(bool)</signal>
     189   <receiver>UIGlobalSettingsNetworkDetailsNAT</receiver>
     190   <slot>sltEditPortForwarding()</slot>
     191  </connection>
     192  <connection>
    177193   <sender>m_pButtonBox</sender>
    178194   <signal>accepted()</signal>
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette