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