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
18 using namespace BNetworkKit;
19
20
21 #undef B_TRANSLATION_CONTEXT
22 #define B_TRANSLATION_CONTEXT "DNSClientServiceAddOn"
23
24
25 class DNSClientServiceAddOn : public BNetworkSettingsAddOn {
26 public:
27 DNSClientServiceAddOn(image_id image,
28 BNetworkSettings& settings);
29 virtual ~DNSClientServiceAddOn();
30
31 virtual BNetworkSettingsItem*
32 CreateNextItem(uint32& cookie);
33 };
34
35
36 class DNSClientServiceItem : public BNetworkSettingsItem {
37 public:
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
51 private:
52 BNetworkSettings& fSettings;
53 BStringItem* fItem;
54 DNSSettingsView* fView;
55 };
56
57
58 // #pragma mark -
59
60
DNSClientServiceItem(BNetworkSettings & settings)61 DNSClientServiceItem::DNSClientServiceItem(BNetworkSettings& settings)
62 :
63 fSettings(settings),
64 fItem(new BStringItem(B_TRANSLATE("DNS settings"))),
65 fView(NULL)
66 {
67 }
68
69
~DNSClientServiceItem()70 DNSClientServiceItem::~DNSClientServiceItem()
71 {
72 if (fView->Parent() == NULL)
73 delete fView;
74
75 delete fItem;
76 }
77
78
79 BNetworkSettingsType
Type() const80 DNSClientServiceItem::Type() const
81 {
82 return B_NETWORK_SETTINGS_TYPE_SERVICE;
83 }
84
85
86 BListItem*
ListItem()87 DNSClientServiceItem::ListItem()
88 {
89 return fItem;
90 }
91
92
93 BView*
View()94 DNSClientServiceItem::View()
95 {
96 if (fView == NULL)
97 fView = new DNSSettingsView(this);
98
99 return fView;
100 }
101
102
103 status_t
Revert()104 DNSClientServiceItem::Revert()
105 {
106 return B_OK;
107 }
108
109
110 bool
IsRevertable()111 DNSClientServiceItem::IsRevertable()
112 {
113 return false;
114 }
115
116
117 // #pragma mark -
118
119
DNSClientServiceAddOn(image_id image,BNetworkSettings & settings)120 DNSClientServiceAddOn::DNSClientServiceAddOn(image_id image,
121 BNetworkSettings& settings)
122 :
123 BNetworkSettingsAddOn(image, settings)
124 {
125 }
126
127
~DNSClientServiceAddOn()128 DNSClientServiceAddOn::~DNSClientServiceAddOn()
129 {
130 }
131
132
133 BNetworkSettingsItem*
CreateNextItem(uint32 & cookie)134 DNSClientServiceAddOn::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
146 extern "C"
147 BNetworkSettingsAddOn*
instantiate_network_settings_add_on(image_id image,BNetworkSettings & settings)148 instantiate_network_settings_add_on(image_id image, BNetworkSettings& settings)
149 {
150 return new DNSClientServiceAddOn(image, settings);
151 }
152