From a4a34e423580f9a13f0016268abba8fb68c09445 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 12 Mar 2015 16:55:48 +0000 Subject: [PATCH] Network: beginnings of the DNS settings. --- src/add-ons/network_settings/Jamfile | 1 + .../dnsclient/DNSClientServiceAddOn.cpp | 151 ++++++++++++++++++ .../dnsclient}/DNSSettingsView.cpp | 0 .../dnsclient}/DNSSettingsView.h | 0 .../network_settings/dnsclient/Jamfile | 17 ++ 5 files changed, 169 insertions(+) create mode 100644 src/add-ons/network_settings/dnsclient/DNSClientServiceAddOn.cpp rename src/{preferences/network/ServicesAddOn => add-ons/network_settings/dnsclient}/DNSSettingsView.cpp (100%) rename src/{preferences/network/ServicesAddOn => add-ons/network_settings/dnsclient}/DNSSettingsView.h (100%) create mode 100644 src/add-ons/network_settings/dnsclient/Jamfile diff --git a/src/add-ons/network_settings/Jamfile b/src/add-ons/network_settings/Jamfile index df06381af6..72abc94a1e 100644 --- a/src/add-ons/network_settings/Jamfile +++ b/src/add-ons/network_settings/Jamfile @@ -5,6 +5,7 @@ SubInclude HAIKU_TOP src add-ons network_settings ipv4 ; SubInclude HAIKU_TOP src add-ons network_settings ipv6 ; # Service add-ons +SubInclude HAIKU_TOP src add-ons network_settings dnsclient ; SubInclude HAIKU_TOP src add-ons network_settings ftpd ; SubInclude HAIKU_TOP src add-ons network_settings sshd ; SubInclude HAIKU_TOP src add-ons network_settings telnetd ; diff --git a/src/add-ons/network_settings/dnsclient/DNSClientServiceAddOn.cpp b/src/add-ons/network_settings/dnsclient/DNSClientServiceAddOn.cpp new file mode 100644 index 0000000000..418042f663 --- /dev/null +++ b/src/add-ons/network_settings/dnsclient/DNSClientServiceAddOn.cpp @@ -0,0 +1,151 @@ +/* + * Copyright 2015 Haiku, Inc. All rights reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Axel Dörfler, + */ + + +#include +#include +#include +#include + +#include "DNSSettingsView.h" + + +using namespace BNetworkKit; + + +#undef B_TRANSLATION_CONTEXT +#define B_TRANSLATION_CONTEXT "DNSClientServiceAddOn" + + +class DNSClientServiceAddOn : public BNetworkSettingsAddOn { +public: + DNSClientServiceAddOn(image_id image, + BNetworkSettings& settings); + virtual ~DNSClientServiceAddOn(); + + virtual BNetworkSettingsItem* + CreateNextItem(uint32& cookie); +}; + + +class DNSClientServiceItem : public BNetworkSettingsItem { +public: + DNSClientServiceItem( + BNetworkSettings& settings); + virtual ~DNSClientServiceItem(); + + virtual BNetworkSettingsType + Type() const; + + virtual BListItem* ListItem(); + virtual BView* View(); + + virtual status_t Revert(); + virtual bool IsRevertable(); + +private: + BNetworkSettings& fSettings; + BStringItem* fItem; + DNSSettingsView* fView; +}; + + +// #pragma mark - + + +DNSClientServiceItem::DNSClientServiceItem(BNetworkSettings& settings) + : + fSettings(settings), + fItem(new BStringItem(B_TRANSLATE("DNS settings"))), + fView(NULL) +{ +} + + +DNSClientServiceItem::~DNSClientServiceItem() +{ + if (fView->Parent() == NULL) + delete fView; + + delete fItem; +} + + +BNetworkSettingsType +DNSClientServiceItem::Type() const +{ + return B_NETWORK_SETTINGS_TYPE_SERVICE; +} + + +BListItem* +DNSClientServiceItem::ListItem() +{ + return fItem; +} + + +BView* +DNSClientServiceItem::View() +{ + if (fView == NULL) + fView = new DNSSettingsView(); + + return fView; +} + + +status_t +DNSClientServiceItem::Revert() +{ + return B_OK; +} + + +bool +DNSClientServiceItem::IsRevertable() +{ + return false; +} + + +// #pragma mark - + + +DNSClientServiceAddOn::DNSClientServiceAddOn(image_id image, + BNetworkSettings& settings) + : + BNetworkSettingsAddOn(image, settings) +{ +} + + +DNSClientServiceAddOn::~DNSClientServiceAddOn() +{ +} + + +BNetworkSettingsItem* +DNSClientServiceAddOn::CreateNextItem(uint32& cookie) +{ + if (cookie++ == 0) + return new DNSClientServiceItem(Settings()); + + return NULL; +} + + +// #pragma mark - + + +extern "C" +BNetworkSettingsAddOn* +instantiate_network_settings_add_on(image_id image, BNetworkSettings& settings) +{ + return new DNSClientServiceAddOn(image, settings); +} diff --git a/src/preferences/network/ServicesAddOn/DNSSettingsView.cpp b/src/add-ons/network_settings/dnsclient/DNSSettingsView.cpp similarity index 100% rename from src/preferences/network/ServicesAddOn/DNSSettingsView.cpp rename to src/add-ons/network_settings/dnsclient/DNSSettingsView.cpp diff --git a/src/preferences/network/ServicesAddOn/DNSSettingsView.h b/src/add-ons/network_settings/dnsclient/DNSSettingsView.h similarity index 100% rename from src/preferences/network/ServicesAddOn/DNSSettingsView.h rename to src/add-ons/network_settings/dnsclient/DNSSettingsView.h diff --git a/src/add-ons/network_settings/dnsclient/Jamfile b/src/add-ons/network_settings/dnsclient/Jamfile new file mode 100644 index 0000000000..da720eece4 --- /dev/null +++ b/src/add-ons/network_settings/dnsclient/Jamfile @@ -0,0 +1,17 @@ +SubDir HAIKU_TOP src add-ons network_settings dnsclient ; + +UsePublicHeaders [ FDirName add-ons network_settings ] ; +UsePrivateHeaders app libroot kernel net ; + +Addon DNSClientService : + DNSClientServiceAddOn.cpp + DNSSettingsView.cpp + + : be network bnetapi Network [ TargetLibsupc++ ] + [ TargetLibstdc++ ] localestub +; + +DoCatalogs DNSClientService : x-vnd.Haiku-DNSClientService : + DNSClientServiceAddOn.cpp + DNSSettingsView.cpp +;