added gateway textbox and new NetworkSettings function to support; made address tabview accessible by BMessage handler to reload current settings (revert); renamed Cancel button to "Revert" (it verks!); small style fix thanks to Clemens
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40511 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
ead4d20c7a
commit
8332dfe78c
@ -31,20 +31,24 @@ InterfaceAddressView::InterfaceAddressView(BRect frame, const char* name,
|
|||||||
NULL, NULL, B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
|
NULL, NULL, B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
|
||||||
fNetmaskField = new BTextControl(frame, "netmask", "Netmask:",
|
fNetmaskField = new BTextControl(frame, "netmask", "Netmask:",
|
||||||
NULL, NULL, B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
|
NULL, NULL, B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
|
||||||
|
fGatewayField = new BTextControl(frame, "gateway", "Gateway:",
|
||||||
|
NULL, NULL, B_FOLLOW_LEFT | B_FOLLOW_TOP, B_WILL_DRAW);
|
||||||
|
|
||||||
fAddressField->GetPreferredSize(&textControlW, &textControlH);
|
fAddressField->GetPreferredSize(&textControlW, &textControlH);
|
||||||
float labelSize = ( textControlW + 50 )
|
float labelSize = ( textControlW + 50 )
|
||||||
- fAddressField->StringWidth("XXX.XXX.XXX.XXX");
|
- fAddressField->StringWidth("XXX.XXX.XXX.XXX");
|
||||||
|
|
||||||
_RevertFields();
|
RevertFields();
|
||||||
// Do the initial field population
|
// Do the initial field population
|
||||||
|
|
||||||
fAddressField->SetDivider(labelSize);
|
fAddressField->SetDivider(labelSize);
|
||||||
fNetmaskField->SetDivider(labelSize);
|
fNetmaskField->SetDivider(labelSize);
|
||||||
|
fGatewayField->SetDivider(labelSize);
|
||||||
|
|
||||||
AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
|
AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
|
||||||
.Add(fAddressField)
|
.Add(fAddressField)
|
||||||
.Add(fNetmaskField)
|
.Add(fNetmaskField)
|
||||||
|
.Add(fGatewayField)
|
||||||
.AddGlue()
|
.AddGlue()
|
||||||
.SetInsets(10, 10, 10, 10)
|
.SetInsets(10, 10, 10, 10)
|
||||||
);
|
);
|
||||||
@ -58,11 +62,12 @@ InterfaceAddressView::~InterfaceAddressView()
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
InterfaceAddressView::_RevertFields()
|
InterfaceAddressView::RevertFields()
|
||||||
{
|
{
|
||||||
// Populate address fields with current settings
|
// Populate address fields with current settings
|
||||||
fAddressField->SetText(fSettings->IP(fFamily));
|
fAddressField->SetText(fSettings->IP(fFamily));
|
||||||
fNetmaskField->SetText(fSettings->Netmask(fFamily));
|
fNetmaskField->SetText(fSettings->Netmask(fFamily));
|
||||||
|
fNetmaskField->SetText(fSettings->Gateway(fFamily));
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
@ -22,9 +22,9 @@ public:
|
|||||||
const char* name, int family,
|
const char* name, int family,
|
||||||
NetworkSettings* settings);
|
NetworkSettings* settings);
|
||||||
virtual ~InterfaceAddressView();
|
virtual ~InterfaceAddressView();
|
||||||
|
status_t RevertFields();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
status_t _RevertFields();
|
|
||||||
NetworkSettings* fSettings;
|
NetworkSettings* fSettings;
|
||||||
int fFamily;
|
int fFamily;
|
||||||
|
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "InterfaceWindow.h"
|
#include "InterfaceWindow.h"
|
||||||
#include "InterfaceAddressView.h"
|
|
||||||
|
|
||||||
#include <Application.h>
|
#include <Application.h>
|
||||||
|
|
||||||
@ -17,7 +16,8 @@
|
|||||||
|
|
||||||
|
|
||||||
InterfaceWindow::InterfaceWindow(NetworkSettings* settings)
|
InterfaceWindow::InterfaceWindow(NetworkSettings* settings)
|
||||||
: BWindow(BRect(50, 50, 370, 350), "Interface Settings",
|
:
|
||||||
|
BWindow(BRect(50, 50, 370, 350), "Interface Settings",
|
||||||
B_TITLED_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL,
|
B_TITLED_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL,
|
||||||
B_NOT_RESIZABLE | B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE,
|
B_NOT_RESIZABLE | B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE,
|
||||||
B_CURRENT_WORKSPACE)
|
B_CURRENT_WORKSPACE)
|
||||||
@ -29,8 +29,8 @@ InterfaceWindow::InterfaceWindow(NetworkSettings* settings)
|
|||||||
fApplyButton = new BButton("apply", B_TRANSLATE("Apply"),
|
fApplyButton = new BButton("apply", B_TRANSLATE("Apply"),
|
||||||
new BMessage(APPLY_MSG));
|
new BMessage(APPLY_MSG));
|
||||||
|
|
||||||
fCancelButton = new BButton("cancel", B_TRANSLATE("Cancel"),
|
fRevertButton = new BButton("revert", B_TRANSLATE("Revert"),
|
||||||
new BMessage(CANCEL_MSG));
|
new BMessage(REVERT_MSG));
|
||||||
|
|
||||||
fTabView->SetResizingMode(B_FOLLOW_ALL);
|
fTabView->SetResizingMode(B_FOLLOW_ALL);
|
||||||
// ensure tab container matches window size
|
// ensure tab container matches window size
|
||||||
@ -43,7 +43,7 @@ InterfaceWindow::InterfaceWindow(NetworkSettings* settings)
|
|||||||
.Add(fTabView)
|
.Add(fTabView)
|
||||||
.AddGroup(B_HORIZONTAL, 5)
|
.AddGroup(B_HORIZONTAL, 5)
|
||||||
.AddGlue()
|
.AddGlue()
|
||||||
.Add(fCancelButton)
|
.Add(fRevertButton)
|
||||||
.Add(fApplyButton)
|
.Add(fApplyButton)
|
||||||
.End()
|
.End()
|
||||||
.SetInsets(10, 10, 10, 10)
|
.SetInsets(10, 10, 10, 10)
|
||||||
@ -60,6 +60,12 @@ void
|
|||||||
InterfaceWindow::MessageReceived(BMessage* message)
|
InterfaceWindow::MessageReceived(BMessage* message)
|
||||||
{
|
{
|
||||||
switch (message->what) {
|
switch (message->what) {
|
||||||
|
case REVERT_MSG:
|
||||||
|
// RFC : we could check fTabView for Selection
|
||||||
|
// here and only revert the selected tab.
|
||||||
|
fIPv4TabView->RevertFields();
|
||||||
|
fIPv6TabView->RevertFields();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
BWindow::MessageReceived(message);
|
BWindow::MessageReceived(message);
|
||||||
}
|
}
|
||||||
@ -71,18 +77,18 @@ status_t
|
|||||||
InterfaceWindow::_PopulateTabs()
|
InterfaceWindow::_PopulateTabs()
|
||||||
{
|
{
|
||||||
BRect frame = fTabView->Bounds();
|
BRect frame = fTabView->Bounds();
|
||||||
BView* view4 = new InterfaceAddressView(frame, "net_settings_ipv4",
|
fIPv4TabView = new InterfaceAddressView(frame, "net_settings_ipv4",
|
||||||
AF_INET, fNetworkSettings);
|
AF_INET, fNetworkSettings);
|
||||||
BView* view6 = new InterfaceAddressView(frame, "net_settings_ipv6",
|
fIPv6TabView = new InterfaceAddressView(frame, "net_settings_ipv6",
|
||||||
AF_INET6, fNetworkSettings);
|
AF_INET6, fNetworkSettings);
|
||||||
|
|
||||||
BTab* tab4 = new BTab;
|
BTab* tab4 = new BTab;
|
||||||
BTab* tab6 = new BTab;
|
BTab* tab6 = new BTab;
|
||||||
|
|
||||||
fTabView->AddTab(view4, tab4);
|
fTabView->AddTab(fIPv4TabView, tab4);
|
||||||
tab4->SetLabel("IPv4");
|
tab4->SetLabel("IPv4");
|
||||||
|
|
||||||
fTabView->AddTab(view6, tab6);
|
fTabView->AddTab(fIPv6TabView, tab6);
|
||||||
tab6->SetLabel("IPv6");
|
tab6->SetLabel("IPv6");
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
#define INTERFACE_WINDOW_H
|
#define INTERFACE_WINDOW_H
|
||||||
|
|
||||||
#include "NetworkSettings.h"
|
#include "NetworkSettings.h"
|
||||||
|
#include "InterfaceAddressView.h"
|
||||||
|
|
||||||
#include <Button.h>
|
#include <Button.h>
|
||||||
#include <Catalog.h>
|
#include <Catalog.h>
|
||||||
@ -22,7 +23,7 @@
|
|||||||
|
|
||||||
enum {
|
enum {
|
||||||
APPLY_MSG = 'aply',
|
APPLY_MSG = 'aply',
|
||||||
CANCEL_MSG = 'cncl'
|
REVERT_MSG = 'rvrt'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -38,8 +39,11 @@ private:
|
|||||||
|
|
||||||
NetworkSettings* fNetworkSettings;
|
NetworkSettings* fNetworkSettings;
|
||||||
BButton* fApplyButton;
|
BButton* fApplyButton;
|
||||||
BButton* fCancelButton;
|
BButton* fRevertButton;
|
||||||
BTabView* fTabView;
|
BTabView* fTabView;
|
||||||
|
|
||||||
|
InterfaceAddressView* fIPv4TabView;
|
||||||
|
InterfaceAddressView* fIPv6TabView;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ NetworkSettings::ReadConfiguration()
|
|||||||
|
|
||||||
if ((route.flags & RTF_GATEWAY) != 0) {
|
if ((route.flags & RTF_GATEWAY) != 0) {
|
||||||
sockaddr_in* inetAddress = (sockaddr_in*)route.gateway;
|
sockaddr_in* inetAddress = (sockaddr_in*)route.gateway;
|
||||||
fGateway = inet_ntoa(inetAddress->sin_addr);
|
fIPv4Gateway = inet_ntoa(inetAddress->sin_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32 addressSize = 0;
|
int32 addressSize = 0;
|
||||||
@ -235,6 +235,16 @@ NetworkSettings::Netmask(int family)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const char*
|
||||||
|
NetworkSettings::Gateway(int family)
|
||||||
|
{
|
||||||
|
if (family == AF_INET6)
|
||||||
|
return fIPv6Gateway.ToString();
|
||||||
|
|
||||||
|
return fIPv4Gateway.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int32
|
int32
|
||||||
NetworkSettings::PrefixLen(int family)
|
NetworkSettings::PrefixLen(int family)
|
||||||
{
|
{
|
||||||
|
@ -41,9 +41,9 @@ public:
|
|||||||
|
|
||||||
const char* IP(int family);
|
const char* IP(int family);
|
||||||
const char* Netmask(int family);
|
const char* Netmask(int family);
|
||||||
|
const char* Gateway(int family);
|
||||||
int32 PrefixLen(int family);
|
int32 PrefixLen(int family);
|
||||||
|
|
||||||
const char* Gateway() { return fGateway.String(); }
|
|
||||||
const char* Name() { return fName.String(); }
|
const char* Name() { return fName.String(); }
|
||||||
const char* Domain() { return fDomain.String(); }
|
const char* Domain() { return fDomain.String(); }
|
||||||
bool AutoConfigure() { return fIPv4Auto; }
|
bool AutoConfigure() { return fIPv4Auto; }
|
||||||
@ -60,15 +60,18 @@ private:
|
|||||||
|
|
||||||
BNetworkInterface fNetworkInterface;
|
BNetworkInterface fNetworkInterface;
|
||||||
|
|
||||||
|
// IPv4 address configuration
|
||||||
bool fIPv4Auto;
|
bool fIPv4Auto;
|
||||||
bool fIPv6Auto;
|
|
||||||
|
|
||||||
BNetworkAddress fIPv4Addr;
|
BNetworkAddress fIPv4Addr;
|
||||||
BNetworkAddress fIPv4Mask;
|
BNetworkAddress fIPv4Mask;
|
||||||
|
BNetworkAddress fIPv4Gateway;
|
||||||
|
|
||||||
|
// IPv6 address configuration
|
||||||
|
bool fIPv6Auto;
|
||||||
BNetworkAddress fIPv6Addr;
|
BNetworkAddress fIPv6Addr;
|
||||||
BNetworkAddress fIPv6Mask;
|
BNetworkAddress fIPv6Mask;
|
||||||
|
BNetworkAddress fIPv6Gateway;
|
||||||
|
|
||||||
BString fGateway;
|
|
||||||
BString fName;
|
BString fName;
|
||||||
BString fDomain;
|
BString fDomain;
|
||||||
bool fDisabled;
|
bool fDisabled;
|
||||||
|
Loading…
Reference in New Issue
Block a user