diff --git a/src/tests/kits/net/preflet/InterfacesAddOn/InterfaceAddressView.cpp b/src/tests/kits/net/preflet/InterfacesAddOn/InterfaceAddressView.cpp index 13fe540a7f..345f070e1b 100644 --- a/src/tests/kits/net/preflet/InterfacesAddOn/InterfaceAddressView.cpp +++ b/src/tests/kits/net/preflet/InterfacesAddOn/InterfaceAddressView.cpp @@ -129,3 +129,17 @@ InterfaceAddressView::RevertFields() return B_OK; } + + +status_t +InterfaceAddressView::SaveFields() +{ + fSettings->SetIP(fFamily, fAddressField->Text()); + fSettings->SetNetmask(fFamily, fNetmaskField->Text()); + fSettings->SetGateway(fFamily, fGatewayField->Text()); + + BMenuItem* item = fModePopUpMenu->FindItem("Automatic"); + fSettings->SetAutoConfigure(fFamily, item->IsMarked()); + + return B_OK; +} diff --git a/src/tests/kits/net/preflet/InterfacesAddOn/InterfaceAddressView.h b/src/tests/kits/net/preflet/InterfacesAddOn/InterfaceAddressView.h index 425dc20a19..21c43d73dd 100644 --- a/src/tests/kits/net/preflet/InterfacesAddOn/InterfaceAddressView.h +++ b/src/tests/kits/net/preflet/InterfacesAddOn/InterfaceAddressView.h @@ -34,6 +34,7 @@ public: virtual void MessageReceived(BMessage* message); virtual void AttachedToWindow(); status_t RevertFields(); + status_t SaveFields(); private: diff --git a/src/tests/kits/net/preflet/InterfacesAddOn/InterfaceWindow.cpp b/src/tests/kits/net/preflet/InterfacesAddOn/InterfaceWindow.cpp index 9bb7d7162a..b0e66c3e68 100644 --- a/src/tests/kits/net/preflet/InterfacesAddOn/InterfaceWindow.cpp +++ b/src/tests/kits/net/preflet/InterfacesAddOn/InterfaceWindow.cpp @@ -20,18 +20,18 @@ InterfaceWindow::InterfaceWindow(NetworkSettings* settings) : BWindow(BRect(50, 50, 370, 350), "Interface Settings", B_TITLED_WINDOW_LOOK, B_MODAL_APP_WINDOW_FEEL, - B_NOT_RESIZABLE | B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE, + B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE, B_CURRENT_WORKSPACE) { fNetworkSettings = settings; fTabView = new BTabView("settings_tabs"); - fApplyButton = new BButton("apply", B_TRANSLATE("Apply"), - new BMessage(APPLY_MSG)); + fApplyButton = new BButton("save", B_TRANSLATE("Save"), + new BMessage(MSG_IP_SAVE)); fRevertButton = new BButton("revert", B_TRANSLATE("Revert"), - new BMessage(REVERT_MSG)); + new BMessage(MSG_IP_REVERT)); fTabView->SetResizingMode(B_FOLLOW_ALL); // ensure tab container matches window size @@ -61,12 +61,17 @@ void InterfaceWindow::MessageReceived(BMessage* message) { switch (message->what) { - case REVERT_MSG: + case MSG_IP_REVERT: // RFC : we could check fTabView for Selection // here and only revert the selected tab. fIPv4TabView->RevertFields(); fIPv6TabView->RevertFields(); break; + case MSG_IP_SAVE: + fIPv4TabView->SaveFields(); + fIPv6TabView->SaveFields(); + this->Quit(); + break; default: BWindow::MessageReceived(message); } diff --git a/src/tests/kits/net/preflet/InterfacesAddOn/InterfaceWindow.h b/src/tests/kits/net/preflet/InterfacesAddOn/InterfaceWindow.h index cb8bcc4657..9f19555d6b 100644 --- a/src/tests/kits/net/preflet/InterfacesAddOn/InterfaceWindow.h +++ b/src/tests/kits/net/preflet/InterfacesAddOn/InterfaceWindow.h @@ -21,8 +21,8 @@ enum { - APPLY_MSG = 'aply', - REVERT_MSG = 'rvrt' + MSG_IP_SAVE = 'ipap', + MSG_IP_REVERT = 'iprv' }; diff --git a/src/tests/kits/net/preflet/InterfacesAddOn/NetworkSettings.cpp b/src/tests/kits/net/preflet/InterfacesAddOn/NetworkSettings.cpp index ab60c9a3f5..5fda422bad 100644 --- a/src/tests/kits/net/preflet/InterfacesAddOn/NetworkSettings.cpp +++ b/src/tests/kits/net/preflet/InterfacesAddOn/NetworkSettings.cpp @@ -56,6 +56,8 @@ NetworkSettings::~NetworkSettings() } +// -- Interface address read code + void NetworkSettings::ReadConfiguration() { @@ -254,3 +256,46 @@ NetworkSettings::PrefixLen(int family) return fIPv4Mask.PrefixLength(); } + +// -- Interface address write code + + +void +NetworkSettings::SetIP(int family, const char* ip) +{ + if (family == AF_INET6) + fIPv6Addr = ip; + else + fIPv4Addr = ip; +} + + +void +NetworkSettings::SetNetmask(int family, const char* mask) +{ + if (family == AF_INET6) + fIPv6Mask = mask; + else + fIPv4Mask = mask; +} + + +void +NetworkSettings::SetGateway(int family, const char* ip) +{ + if (family == AF_INET6) + fIPv6Gateway = ip; + else + fIPv4Gateway = ip; +} + + +void +NetworkSettings::SetAutoConfigure(int family, bool autoConf) +{ + if (family == AF_INET6) + fIPv6Auto = autoConf; + else + fIPv4Auto = autoConf; +} + diff --git a/src/tests/kits/net/preflet/InterfacesAddOn/NetworkSettings.h b/src/tests/kits/net/preflet/InterfacesAddOn/NetworkSettings.h index 6a02149ced..c3c9e74424 100644 --- a/src/tests/kits/net/preflet/InterfacesAddOn/NetworkSettings.h +++ b/src/tests/kits/net/preflet/InterfacesAddOn/NetworkSettings.h @@ -22,20 +22,17 @@ public: NetworkSettings(const char* name); virtual ~NetworkSettings(); -// void SetIP(const BString& ip) -// { fIP = ip; } -// void SetGateway(const BString& ip) -// { fGateway = ip; } -// void SetNetmask(const BString& ip) -// { fNetmask = ip; } -// void SetDomain(const BString& domain) -// { fDomain = domain; } -// void SetAutoConfigure(bool autoConfigure) -// { fAuto = autoConfigure; } + void SetIP(int family, const char* ip); + void SetNetmask(int family, const char* mask); + void SetGateway(int family, const char* mask); + void SetAutoConfigure(int family, bool autoConf); + void SetDisabled(bool disabled) { fDisabled = disabled; } // void SetWirelessNetwork(const char* name) // { fWirelessNetwork.SetTo(name); } +// void SetDomain(const BString& domain) +// { fDomain = domain; } BNetworkAddress IPAddr(int family);