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