xref: /haiku/src/preferences/network/InterfaceListItem.h (revision 21258e2674226d6aa732321b6f8494841895af5f)
1 /*
2  * Copyright 2004-2015 Haiku, Inc. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Alexander von Gluck, kallisti5@unixzen.com
7  *		Philippe Houdoin
8  *		Fredrik Modéen
9  *		John Scipione, jscipione@gmail.com
10  */
11 #ifndef INTERFACE_LIST_ITEM_H
12 #define INTERFACE_LIST_ITEM_H
13 
14 
15 #include <ListItem.h>
16 #include <NetworkInterface.h>
17 #include <NetworkSettingsAddOn.h>
18 
19 
20 enum BNetworkInterfaceType {
21 	B_NETWORK_INTERFACE_TYPE_WIFI = 'wifi',
22 	B_NETWORK_INTERFACE_TYPE_ETHERNET = 'ethr',
23 	B_NETWORK_INTERFACE_TYPE_DIAL_UP = 'dial',
24 	B_NETWORK_INTERFACE_TYPE_VPN = 'nvpn',
25 	B_NETWORK_INTERFACE_TYPE_OTHER = 'othe',
26 };
27 
28 
29 class BBitmap;
30 
31 
32 class InterfaceListItem : public BListItem,
33 	public BNetworkKit::BNetworkConfigurationListener {
34 public:
35 								InterfaceListItem(const char* name,
36 									BNetworkInterfaceType type);
37 								~InterfaceListItem();
38 
39 			void				DrawItem(BView* owner,
40 									BRect bounds, bool complete);
41 			void				Update(BView* owner, const BFont* font);
42 
43 	inline	const char*			Name() const { return fInterface.Name(); }
44 
45 	virtual	void				ConfigurationUpdated(const BMessage& message);
46 
47 private:
48 			void 				_Init();
49 			void				_PopulateBitmaps(const char* mediaType);
50 			void				_UpdateState();
51 			BBitmap*			_StateIcon() const;
52 			const char*			_StateText() const;
53 
54 private:
55 			BNetworkInterfaceType fType;
56 
57 			BBitmap* 			fIcon;
58 			BBitmap*			fIconOffline;
59 			BBitmap*			fIconPending;
60 			BBitmap*			fIconOnline;
61 
62 			BNetworkInterface	fInterface;
63 				// Hardware Interface
64 
65 			float				fFirstLineOffset;
66 			float				fLineOffset;
67 
68 			BString				fDeviceName;
69 			bool				fDisabled;
70 			bool				fHasLink;
71 			bool				fConnecting;
72 			BString				fSubtitle;
73 };
74 
75 
76 #endif // INTERFACE_LIST_ITEM_H
77