1/* 2 * Copyright 2015 Haiku, Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Axel Dörfler, <axeld@pinc-software.de> 7 */ 8 9 10#include <Catalog.h> 11#include <NetworkSettings.h> 12#include <NetworkSettingsAddOn.h> 13#include <StringItem.h> 14 15#include "DNSSettingsView.h" 16 17 18using namespace BNetworkKit; 19 20 21#undef B_TRANSLATION_CONTEXT 22#define B_TRANSLATION_CONTEXT "DNSClientServiceAddOn" 23 24 25class DNSClientServiceAddOn : public BNetworkSettingsAddOn { 26public: 27 DNSClientServiceAddOn(image_id image, 28 BNetworkSettings& settings); 29 virtual ~DNSClientServiceAddOn(); 30 31 virtual BNetworkSettingsItem* 32 CreateNextItem(uint32& cookie); 33}; 34 35 36class DNSClientServiceItem : public BNetworkSettingsItem { 37public: 38 DNSClientServiceItem( 39 BNetworkSettings& settings); 40 virtual ~DNSClientServiceItem(); 41 42 virtual BNetworkSettingsType 43 Type() const; 44 45 virtual BListItem* ListItem(); 46 virtual BView* View(); 47 48 virtual status_t Revert(); 49 virtual bool IsRevertable(); 50 51private: 52 BNetworkSettings& fSettings; 53 BStringItem* fItem; 54 DNSSettingsView* fView; 55}; 56 57 58// #pragma mark - 59 60 61DNSClientServiceItem::DNSClientServiceItem(BNetworkSettings& settings) 62 : 63 fSettings(settings), 64 fItem(new BStringItem(B_TRANSLATE("DNS settings"))), 65 fView(NULL) 66{ 67} 68 69 70DNSClientServiceItem::~DNSClientServiceItem() 71{ 72 if (fView->Parent() == NULL) 73 delete fView; 74 75 delete fItem; 76} 77 78 79BNetworkSettingsType 80DNSClientServiceItem::Type() const 81{ 82 return B_NETWORK_SETTINGS_TYPE_SERVICE; 83} 84 85 86BListItem* 87DNSClientServiceItem::ListItem() 88{ 89 return fItem; 90} 91 92 93BView* 94DNSClientServiceItem::View() 95{ 96 if (fView == NULL) 97 fView = new DNSSettingsView(this); 98 99 return fView; 100} 101 102 103status_t 104DNSClientServiceItem::Revert() 105{ 106 return B_OK; 107} 108 109 110bool 111DNSClientServiceItem::IsRevertable() 112{ 113 return false; 114} 115 116 117// #pragma mark - 118 119 120DNSClientServiceAddOn::DNSClientServiceAddOn(image_id image, 121 BNetworkSettings& settings) 122 : 123 BNetworkSettingsAddOn(image, settings) 124{ 125} 126 127 128DNSClientServiceAddOn::~DNSClientServiceAddOn() 129{ 130} 131 132 133BNetworkSettingsItem* 134DNSClientServiceAddOn::CreateNextItem(uint32& cookie) 135{ 136 if (cookie++ == 0) 137 return new DNSClientServiceItem(Settings()); 138 139 return NULL; 140} 141 142 143// #pragma mark - 144 145 146extern "C" 147BNetworkSettingsAddOn* 148instantiate_network_settings_add_on(image_id image, BNetworkSettings& settings) 149{ 150 return new DNSClientServiceAddOn(image, settings); 151} 152