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