diff --git a/src/add-ons/network_settings/Jamfile b/src/add-ons/network_settings/Jamfile index 8163bca00f..8b4a68b580 100644 --- a/src/add-ons/network_settings/Jamfile +++ b/src/add-ons/network_settings/Jamfile @@ -1,4 +1,4 @@ SubDir HAIKU_TOP src add-ons network_settings ; SubInclude HAIKU_TOP src add-ons network_settings ipv4 ; -#SubInclude HAIKU_TOP src add-ons network_settings ipv6 ; +SubInclude HAIKU_TOP src add-ons network_settings ipv6 ; diff --git a/src/add-ons/network_settings/ipv4/Jamfile b/src/add-ons/network_settings/ipv4/Jamfile index 3e0263b25b..c61bb44632 100644 --- a/src/add-ons/network_settings/ipv4/Jamfile +++ b/src/add-ons/network_settings/ipv4/Jamfile @@ -1,12 +1,8 @@ SubDir HAIKU_TOP src add-ons network_settings ipv4 ; -#UseHeaders [ FDirName $(HAIKU_TOP) src preferences network ] ; -#UseHeaders [ FDirName $(HAIKU_TOP) src servers net ] : true ; - UsePublicHeaders [ FDirName add-ons network_settings ] ; UsePrivateHeaders shared ; - AddResources Interfaces : InterfacesIcons.rdef ; diff --git a/src/add-ons/network_settings/ipv6/IPv6InterfaceAddOn.cpp b/src/add-ons/network_settings/ipv6/IPv6InterfaceAddOn.cpp new file mode 100644 index 0000000000..db56aa6b94 --- /dev/null +++ b/src/add-ons/network_settings/ipv6/IPv6InterfaceAddOn.cpp @@ -0,0 +1,155 @@ +/* + * Copyright 2015 Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Axel Dörfler, + */ + + +#include +#include +#include + +#include "InterfaceAddressView.h" + + +using namespace BNetworkKit; + + +#undef B_TRANSLATION_CONTEXT +#define B_TRANSLATION_CONTEXT "IPv6InterfaceAddOn" + + +class IPv6InterfaceAddOn : public BNetworkSettingsAddOn { +public: + IPv6InterfaceAddOn(image_id image, + BNetworkSettings& settings); + virtual ~IPv6InterfaceAddOn(); + + virtual BNetworkSettingsInterfaceItem* + CreateNextInterfaceItem(uint32& cookie, + const char* interface); +}; + + +class IPv6InterfaceItem : public BNetworkSettingsInterfaceItem { +public: + IPv6InterfaceItem(const char* interface, + BNetworkSettings& settings); + virtual ~IPv6InterfaceItem(); + + virtual BListItem* ListItem(); + virtual BView* View(); + + virtual status_t Revert(); + virtual bool IsRevertable(); + + virtual void ConfigurationUpdated(const BMessage& message); + +private: + BNetworkSettings& fSettings; + BStringItem* fItem; + InterfaceAddressView* + fView; +}; + + +// #pragma mark - + + +IPv6InterfaceItem::IPv6InterfaceItem(const char* interface, + BNetworkSettings& settings) + : + BNetworkSettingsInterfaceItem(interface), + fSettings(settings), + fItem(new BStringItem(B_TRANSLATE("IPv6"))), + fView(NULL) +{ +} + + +IPv6InterfaceItem::~IPv6InterfaceItem() +{ + if (fView->Parent() == NULL) + delete fView; + + delete fItem; +} + + +BListItem* +IPv6InterfaceItem::ListItem() +{ + return fItem; +} + + +BView* +IPv6InterfaceItem::View() +{ + if (fView == NULL) + fView = new InterfaceAddressView(AF_INET6, Interface(), fSettings); + + return fView; +} + + +status_t +IPv6InterfaceItem::Revert() +{ + return B_OK; +} + + +bool +IPv6InterfaceItem::IsRevertable() +{ + return false; +} + + +void +IPv6InterfaceItem::ConfigurationUpdated(const BMessage& message) +{ + if (fView != NULL) + fView->ConfigurationUpdated(message); +} + + +// #pragma mark - + + +IPv6InterfaceAddOn::IPv6InterfaceAddOn(image_id image, + BNetworkSettings& settings) + : + BNetworkSettingsAddOn(image, settings) +{ +} + + +IPv6InterfaceAddOn::~IPv6InterfaceAddOn() +{ +} + + +BNetworkSettingsInterfaceItem* +IPv6InterfaceAddOn::CreateNextInterfaceItem(uint32& cookie, + const char* interface) +{ + if (cookie++ == 0) + return new IPv6InterfaceItem(interface, Settings()); + + return NULL; +} + + +// #pragma mark - + + +extern "C" +BNetworkSettingsAddOn* +instantiate_network_settings_add_on(image_id image, BNetworkSettings& settings) +{ + return new IPv6InterfaceAddOn(image, settings); +} diff --git a/src/add-ons/network_settings/ipv6/Jamfile b/src/add-ons/network_settings/ipv6/Jamfile new file mode 100644 index 0000000000..9436d7836c --- /dev/null +++ b/src/add-ons/network_settings/ipv6/Jamfile @@ -0,0 +1,23 @@ +SubDir HAIKU_TOP src add-ons network_settings ipv6 ; + +UsePublicHeaders [ FDirName add-ons network_settings ] ; +UsePrivateHeaders shared ; + +SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src add-ons network_settings ipv4 ] ; + +AddResources Interfaces : + InterfacesIcons.rdef +; + +Addon IPv6Interface : + IPv6InterfaceAddOn.cpp + InterfaceAddressView.cpp + + : be bnetapi libshared.a Network [ TargetLibsupc++ ] + [ TargetLibstdc++ ] localestub +; + +DoCatalogs IPv6Interface : x-vnd.Haiku-IPv6Interface : + IPv6InterfaceAddOn.cpp + InterfaceAddressView.cpp +;