xref: /haiku/headers/os/add-ons/network_settings/NetworkSettingsAddOn.h (revision 3401ff7c2fc9108be53400521aa408d9eb4386e6)
177db25ddSAxel Dörfler /*
277db25ddSAxel Dörfler  * Copyright 2004-2015 Haiku Inc. All rights reserved.
377db25ddSAxel Dörfler  * Distributed under the terms of the MIT License.
477db25ddSAxel Dörfler  *
577db25ddSAxel Dörfler  */
677db25ddSAxel Dörfler #ifndef _NETWORK_SETTINGS_ADD_ON_H
777db25ddSAxel Dörfler #define _NETWORK_SETTINGS_ADD_ON_H
877db25ddSAxel Dörfler 
977db25ddSAxel Dörfler 
1077db25ddSAxel Dörfler #include <image.h>
1177db25ddSAxel Dörfler #include <ListItem.h>
1277db25ddSAxel Dörfler #include <Resources.h>
1377db25ddSAxel Dörfler #include <View.h>
1477db25ddSAxel Dörfler 
1577db25ddSAxel Dörfler 
1677db25ddSAxel Dörfler namespace BNetworkKit {
1777db25ddSAxel Dörfler 
1877db25ddSAxel Dörfler 
1977db25ddSAxel Dörfler enum BNetworkSettingsType {
2077db25ddSAxel Dörfler 	B_NETWORK_SETTINGS_TYPE_INTERFACE = 'intf',
2177db25ddSAxel Dörfler 	B_NETWORK_SETTINGS_TYPE_SERVICE = 'serv',
2277db25ddSAxel Dörfler 	B_NETWORK_SETTINGS_TYPE_DIAL_UP = 'dial',
2377db25ddSAxel Dörfler 	B_NETWORK_SETTINGS_TYPE_OTHER = 'othr'
2477db25ddSAxel Dörfler };
2577db25ddSAxel Dörfler 
2677db25ddSAxel Dörfler class BNetworkProfile;
2777db25ddSAxel Dörfler 
2877db25ddSAxel Dörfler 
2977db25ddSAxel Dörfler class BNetworkSettingsItem {
3077db25ddSAxel Dörfler public:
3177db25ddSAxel Dörfler 								BNetworkSettingsItem();
3277db25ddSAxel Dörfler 	virtual						~BNetworkSettingsItem();
3377db25ddSAxel Dörfler 
3477db25ddSAxel Dörfler 	virtual	BNetworkSettingsType
3577db25ddSAxel Dörfler 								Type() const = 0;
36021ff1caSAxel Dörfler 	virtual BListItem*			ListItem() = 0;
37021ff1caSAxel Dörfler 	virtual BView*				View() = 0;
3877db25ddSAxel Dörfler 
3977db25ddSAxel Dörfler 	virtual status_t			ProfileChanged(
4077db25ddSAxel Dörfler 									const BNetworkProfile* newProfile);
4177db25ddSAxel Dörfler 			const BNetworkProfile*
4277db25ddSAxel Dörfler 								Profile() const;
4377db25ddSAxel Dörfler 
44f6c7cf44SAxel Dörfler 	virtual	status_t			Apply() = 0;
4577db25ddSAxel Dörfler 	virtual	status_t			Revert() = 0;
46f6c7cf44SAxel Dörfler 	virtual bool				IsRevertable() = 0;
4777db25ddSAxel Dörfler 
4877db25ddSAxel Dörfler private:
4977db25ddSAxel Dörfler 			const BNetworkProfile*
5077db25ddSAxel Dörfler 								fProfile;
5177db25ddSAxel Dörfler };
5277db25ddSAxel Dörfler 
5377db25ddSAxel Dörfler 
5477db25ddSAxel Dörfler class BNetworkSettingsInterfaceItem : public BNetworkSettingsItem {
5577db25ddSAxel Dörfler public:
5677db25ddSAxel Dörfler 								BNetworkSettingsInterfaceItem(
5777db25ddSAxel Dörfler 									const char* interface);
58*3401ff7cSAxel Dörfler 	virtual						~BNetworkSettingsInterfaceItem();
5977db25ddSAxel Dörfler 
6077db25ddSAxel Dörfler 	virtual	BNetworkSettingsType
6177db25ddSAxel Dörfler 								Type() const;
6277db25ddSAxel Dörfler 			const char*			Interface() const;
6377db25ddSAxel Dörfler 
6477db25ddSAxel Dörfler private:
6577db25ddSAxel Dörfler 			const char*			fInterface;
6677db25ddSAxel Dörfler };
6777db25ddSAxel Dörfler 
6877db25ddSAxel Dörfler 
6977db25ddSAxel Dörfler class BNetworkSettingsAddOn {
7077db25ddSAxel Dörfler public:
7177db25ddSAxel Dörfler 								BNetworkSettingsAddOn(image_id image);
7277db25ddSAxel Dörfler 	virtual						~BNetworkSettingsAddOn();
7377db25ddSAxel Dörfler 
7477db25ddSAxel Dörfler 	virtual	BNetworkSettingsInterfaceItem*
7577db25ddSAxel Dörfler 								CreateNextInterfaceItem(uint32& cookie,
7677db25ddSAxel Dörfler 									const char* interface);
7777db25ddSAxel Dörfler 	virtual	BNetworkSettingsItem*
7877db25ddSAxel Dörfler 								CreateNextItem(uint32& cookie);
7977db25ddSAxel Dörfler 
8077db25ddSAxel Dörfler 			image_id			Image();
8177db25ddSAxel Dörfler 			BResources*			Resources();
8277db25ddSAxel Dörfler 
8377db25ddSAxel Dörfler private:
8477db25ddSAxel Dörfler 			image_id			fImage;
8577db25ddSAxel Dörfler 			BResources*			fResources;
8677db25ddSAxel Dörfler };
8777db25ddSAxel Dörfler 
8877db25ddSAxel Dörfler 
8977db25ddSAxel Dörfler // Your add-on needs to export this hook in order to be picked up
9077db25ddSAxel Dörfler extern "C" BNetworkSettingsAddOn* instantiate_network_settings_add_on(
9177db25ddSAxel Dörfler 	image_id image);
9277db25ddSAxel Dörfler 
9377db25ddSAxel Dörfler 
9477db25ddSAxel Dörfler }	// namespace BNetworkKit
9577db25ddSAxel Dörfler 
9677db25ddSAxel Dörfler 
9777db25ddSAxel Dörfler #endif // _NETWORK_SETTINGS_ADD_ON_H
98